PHP在多维数组中搜索子值的父键

时间:2016-08-06 14:56:33

标签: php arrays search multidimensional-array

我有一个多维数组,例如:

$array[ 'ex1' ] = array( 'link', '915', '716' );
$array[ 'am2' ] = array( 'image', '37', '685' );
$array[ 'ple' ] = array( 'video', '354', '675' );

如果我致电$array[$ID][0],我会link,很棒!

如果我搜索link,我需要获取父密钥,在这种情况下ex1

这是我目前的解决方案:

foreach( $array as $key => $value ) { 
if( in_array( 'link', $value ) ) { $ID = $key; }
}

有没有更好的方法来设置数组或搜索父键?

编辑

如果我以这种方式更改数组格式:

$array[] = array( 'ex1', 'link', '915', '716' );
$array[] = array( 'am2', 'image', '37', '685' );
$array[] = array( 'ple', 'video', '354', '675' );

我想通过array_search( 'link', array_column( $array, 1, 0 ))获取$ ID更容易 但后来我看不懂!例如:echo( $array[$ID][0] ) // should output link

哪种解决方案更好?

1 个答案:

答案 0 :(得分:2)

您可以像这样使用array_search

foreach($array as $k => $v) {
    $ind = array_search("link",$array[$k])
    if ($ind) { $ID = $k; break; } 
}

当您离开此循环时,您可以使用$array[$ID][$ind]检索“链接”。

与您的方法的不同之处在于,true中不仅仅有falsein_array,但您也可以获得与{{{ 1}}在搜索块内。

当然,当您搜索不存在的密钥时,这不会解决您的问题。使用您的示例,

array_search

如果您使用此方法搜索“alpha”,则会出现错误。安全的解决方案就像

$array[] = array( 'ex1', 'link', '915', '716' );
$array[] = array( 'am2', 'image', '37', '685' );
$array[] = array( 'ple', 'video', '354', '675' );

我想,这会以你想要的方式在大海捞[{1}}中搜索$ID = false foreach($array as $k => $v) { $ind = array_search($needle,$array[$k]) if ($ind) { $ID = $k; break; } } if ($ID) { $element = $array[$ID][$ind] } else { // The item searched for does NOT exist } 中的值。

相关问题