suma propiedad matrices demostracion asociativo asociativa array php arrays

php - propiedad - Obtención de valores de matriz asociativa



array asociativo php (7)

Tengo la siguiente matriz principal llamada $m

Array ( [0] => Array ( [home] => Home ) [1] => Array ( [contact_us] => Contact Us ) [2] => Array ( [about_us] => About Us ) [3] => Array ( [feedback_form] => Feedback Form ) [4] => Array ( [enquiry_form] => Products ) [5] => Array ( [gallery] => Gallery ) )

Tengo los valores, por ejemplo, home, contact_us en una matriz $ options, necesito obtener los valores de la matriz principal llamada $ m usando la matriz $ options

p.ej. Si la matriz $ options tiene valor de inicio, necesito obtener el valor Inicio de la matriz principal ($ m)

mi código se ve como sigue

$c = 0; foreach($options as $o){ echo $m[$c][$o]; ++$c; }

¿De alguna manera no puedo recibir los valores de la matriz principal?


¿Cómo es esto?

foreach( $options as $option ) { foreach( $m as $m_key => $m_value ) { if( $option == $m_key ) { echo ''Name for '' . $options . '' is '' . $m_value; break; } } }


¿Está seguro de que la matriz de opciones está en el mismo orden de $ m? Tal vez tu eres tu

echo $m[$c][$o];

se está resolviendo en $ m [0] [''galería''] que obviamente está vacía.

Puedes probar diferentes soluciones, para mí, una buena (quizás no tan eficiente) debería ser así:

for($c=0, $limit=count($c); $c < $limit; $c++) if (array_search(key($m[$c]), $options)) echo current($m[$c]);

Si desea utilizar su enfoque, debe aplanar su matriz con algo como esto:

foreach ($m as $o) $flattenedArray[key($o)]=current($o); foreach ($options as $o) echo $flattenedArray($o);

Sin embargo, al hacer esto, se eliminan las voces duplicadas de su matriz original si existen tales duplicados.


Intente usar una función recursiva array_walk, por ejemplo

$a = array( array(''ooo''=>''yeah''), array(''bbb''=>''man'') ); function get_array_values($item, $key){ if(!is_numeric($key)){ echo "$item/n"; } } array_walk_recursive($a,''get_array_values'');


Primero transformaría $m en una matriz más simple con un solo nivel:

$new_m = array(); foreach ($m as $item) { foreach ($item as $key => $value) { $new_m[$key] = $value; } }

Entonces puedes usar:

foreach ($options as $o) { echo $new_m[$o]; }


Prueba esto:

foreach($options as $o){ foreach($m as $check){ if(isset($check[$o])) echo $check[$o]; } }

Aunque sería mejor que la matriz se rellenara solo con las páginas y no con una matriz multidimensional


Suponiendo que las claves en los arreglos de sub sean únicas, usted puede

  1. fusionar todas las matrices secundarias en una única matriz utilizando call_user_func_array en array_merge
  2. Intercambie claves y valores de su matriz de opciones.
  3. Use array_intersect_key para recuperar una matriz con todos los valores.

Ejemplo como tal:

$options = array(''about_us'', ''enquiry_form''); $values = array_intersect_key( call_user_func_array(''array_merge'', $m), // Merge all subarrays array_flip($options) // Make values in options keys ); print_r($values);

lo que resulta en:

Array ( [about_us] => About Us [enquiry_form] => Products )


$trails1 = array(); foreach ($trails as $item) { foreach ($item as $key => $value) { $trails1[].= $value; } } echo ''<pre>'';print_r($trails1); exit;