我有一个多维数组,例如:
$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
哪种解决方案更好?
答案 0 :(得分:2)
您可以像这样使用array_search
foreach($array as $k => $v) {
$ind = array_search("link",$array[$k])
if ($ind) { $ID = $k; break; }
}
当您离开此循环时,您可以使用$array[$ID][$ind]
检索“链接”。
与您的方法的不同之处在于,true
中不仅仅有false
或in_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
}
中的值。