valor una suma recorrer multidimensional matriz matrices manejo imprimir hacer dibujar como buscar array 5x5 3x3 php arrays

una - recorrer un array multidimensional php



Obtenga el valor de índice de una matriz en PHP (10)

Tengo una matriz:

$list = array(''string1'', ''string2'', ''string3'');

Quiero obtener el índice para un valor dado (es decir, 1 para string2 2 y 2 para string3 )

Todo lo que quiero es la posición de las cadenas en la matriz

  • string1 es 0
  • string2 es 1
  • string3 es 2

¿Cómo lograr esto?


¿Podrías ser un poco más específico?

$key = array_search(''string2'',$list)

funciona bien para mí ¿Estás tratando de lograr algo más complejo?


// o considerando su estructura de matriz:

$array = array( ''string1'' => array(''a'' => '''', ''b'' => '''', ''c'' => ''''), ''string2'' => array(''a'' => '''', ''b'' => '''', ''c'' => ''''), ''string3'' => array(''a'' => '''', ''b'' => '''', ''c'' => ''''), );

// podrías simplemente

function findIndexOfKey($key_to_index,$array){ return array_search($key_to_index,array_keys($array)); }

// ejecutado

print "/r/n//-- Method 1 --///r/n"; print ''#index of: string1 = ''.findIndexofKey(''string1'',$array)."/r/n"; print ''#index of: string2 = ''.findIndexofKey(''string2'',$array)."/r/n"; print ''#index of: string3 = ''.findIndexofKey(''string3'',$array)."/r/n";

// alternativamente

print "/r/n//-- Method 2 --///r/n"; print ''#index of: string1 = ''.array_search(''string1'',array_keys($array))."/r/n"; print ''#index of: string2 = ''.array_search(''string2'',array_keys($array))."/r/n"; print ''#index of: string3 = ''.array_search(''string3'',array_keys($array))."/r/n";

// recursivamente

print "/r/n//-- Method 3 --///r/n"; foreach(array_keys($array) as $key => $value){ print ''#index of: ''.$value.'' = ''.$key."/r/n"; }

// salidas

//-- Method 1 --// #index of: string1 = 0 #index of: string2 = 1 #index of: string3 = 2 //-- Method 2 --// #index of: string1 = 0 #index of: string2 = 1 #index of: string3 = 2 //-- Method 3 --// #index of: string1 = 0 #index of: string2 = 1 #index of: string3 = 2


El problema es que no tienes un índice numérico en tu matriz.
Usar array_values ​​() creará una matriz indexada cero que luego puede buscar utilizando array_search () omitiendo la necesidad de usar un ciclo for.

$list = array(''string1'', ''string2'', ''string3''); $index = array_search(''string2'',array_values($list));


Este código debería hacer lo mismo que su nueva rutina, trabajando con la matriz multidimensional correcta.

$arr = array( ''string1'' => array(''a'' => '''', ''b'' => '''', ''c'' => ''''), ''string2'' => array(''a'' => '''', ''b'' => '''', ''c'' => ''''), ''string3'' => array(''a'' => '''', ''b'' => '''', ''c'' => '''') ); echo ''Index of "string2" = ''. array_search(''string2'', array_keys($arr));


Otras personas han sugerido array_search() que proporciona la clave del elemento de la matriz donde se encuentra el valor. Puede asegurarse de que las claves de matriz sean enteros contiguos utilizando array_values() :

$list = array(0=>''string1'', ''foo''=>''string2'', 42=>''string3''); $index = array_search(''string2'', array_values($list)); print "$index/n"; // result: 1

Usted dijo en su pregunta que array_search() no tenía sentido. ¿Puedes explicar porque? ¿Qué intentaste y cómo no satisfizo tus necesidades?


Pruebe la función de PHP array_keys.

$key_string1 = array_keys($list, ''string1'');


Si solo está haciendo algunos de ellos (y / o el tamaño de la matriz es grande), entonces estaba en el camino correcto con array_search:

$list = array(''string1'', ''string2'', ''string3''); $k = array_search(''string2'', $list); //$k = 1;

Si quieres todo (o muchos de ellos), un bucle te ayudará a mejorar:

foreach ($list as $key => $value) { echo $value . " in " . $key . ", "; } // Prints "string1 in 0, string2 in 1, string3 in 2, "


array_search debería funcionar bien, acaba de probar esto y devuelve las claves como se esperaba:

$list = array(''string1'', ''string2'', ''string3''); echo "Key = ".array_search(''string1'', $list); echo " Key = ".array_search(''string2'', $list); echo " Key = ".array_search(''string3'', $list);

O para el índice, podrías usar

$list = array(''string1'', ''string2'', ''string3''); echo "Index = ".array_search(''string1'', array_merge($list)); echo " Index = ".array_search(''string2'', array_merge($list)); echo " Index = ".array_search(''string3'', array_merge($list));


array_search es la forma de hacerlo.

De los docs :

$array = array(0 => ''blue'', 1 => ''red'', 2 => ''green'', 3 => ''red''); $key = array_search(''green'', $array); // $key = 2; $key = array_search(''red'', $array); // $key = 1;

Puede recorrer la matriz de forma manual y encontrar el índice, pero ¿por qué hacerlo cuando hay una función para eso? Esta función siempre devuelve una clave y funcionará bien con matrices asociativas y normales.


$find="Topsite"; $list=array("Tope","Ajayi","Topsite","Infotech"); $list_count=count($list); sort($list); for($i=0;$i<$list_count;$i++) { if($list[$i]==$find){ $position=$i; } } echo $position;