Php 通过另一个键和值在多维数组中查找值

Php 通过另一个键和值在多维数组中查找值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有以下数组: $array=array( '项目img列表'=>数组( 排列( “图像类型”=>1, '图像url'=>'http://img07.allegroimg.pl/...' ), 排列( “图像类型”=>2, '图像url'=>'http://img07.allegroimg.pl/...' ), 排列( “图像类型”=>3, '图像url'=>'http://img07.allegroimg.pl/...' ) ) ) 如何在“图像类型”为“2”的位置获取第一个“图像url”值

我有以下数组:

$array=array(
'项目img列表'=>数组(
排列(
“图像类型”=>1,
'图像url'=>'http://img07.allegroimg.pl/...'
),
排列(
“图像类型”=>2,
'图像url'=>'http://img07.allegroimg.pl/...'
),
排列(
“图像类型”=>3,
'图像url'=>'http://img07.allegroimg.pl/...'
)
)
)
如何在“图像类型”为“2”的位置获取第一个“图像url”值? 我试图通过以下代码实现这一点,但什么也没有:

$zdjecia=$item['item-img-list'];
foreach($zdjecia作为$zdjecie){
foreach($zdjecie作为$key=>$value){
如果($key==“image type”&&&$value==“2”){
$zdjecie_aukcji=$key['image-url'];
}
}
}
谢谢你的帮助

工作

$searchKey = 2;
foreach($zdjecia as $zdjecie) {
    if (**$zdjecie->{'image-type'}** == $searchKey){
        $zdjecie_aukcji = **$zdjecie->{'image-url'}**;
        break;
    }
}
修改为:

$zdjecia=$array['item-img-list'];
foreach($zdjecia作为$zdjecie){
如果($zdjecie['image-type']=='2'){
$zdjecie_aukcji=$zdjecie['image-url'];
}
}
或(PHP>=5.5)


我在项目中使用自定义函数在多维数组中按键查找值的建议:

函数数组\u搜索\u多($array,$key,$value)
{
$results=array();
if(is_数组($array))
{
if(isset($array[$key])&&$array[$key]==$value)
$results[]=$array;
foreach($array作为$subarray)
$results=array_merge($results,array_search_multi($subarray,$key,$value));
}
返回$results;
}
用法:

$results = array_search_multi($array, 'image-type', '2');
echo $results[0]['image-url'];
输出:

$results = array_search_multi($array, 'image-type', '2');
echo $results[0]['image-url'];
http://img07.allegroimg.pl/...


添加
break紧接着

$zdjecie_aukcji=$key['image-url'];

为什么不简单地说:

$array=array(
'项目img列表'=>数组(
排列(
“图像类型”=>1,
'图像url'=>'http://img07.allegroimg.pl/...'
),
排列(
“图像类型”=>2,
'图像url'=>'http://img07.allegroimg.pl/...'
),
排列(
“图像类型”=>3,
'图像url'=>'http://img07.allegroimg.pl/...'
)
)
);
$newArray=array();
foreach($k=>v的数组['item-img-list']{
$newArray[$v['image-type']=$v['image-url'];
}
输出:-

     Array
    (
        [1] => http://img07.allegroimg.pl/...
        [2] => http://img07.allegroimg.pl/...
        [3] => http://img07.allegroimg.pl/...
    )

echo$newArray[2];
您也可以像这样检查密钥:

 if (array_key_exists(2, $newArray)) {
   // Do whatever you want
 }

用于循环。。!在循环中设置i和j。我认为
$zdjecia=$item['item-img-list']必须更改为
$zdjecia=$array['item-img-list']。如果是这样,我的自定义函数示例的所有功能都正常,请!正如我的回答所说,对未定义函数array_column()@Rafal-array_column()的调用仅在PHP>=5.5中可用,尽管有一个repo为PHPThank you的早期版本提供了array_column()!我必须将$zdjecie['image-type']更改为$zdjecie->{'image-type'},将$zdjecie['image-url']更改为$zdjecie->{'image-url'}为foreach()提供的无效参数是否使用了
$array
?无法将stdClass类型的对象用作数组[1][2][3]。。。有许多[1]、[2]和[3]在这本书中array@Rafa科纳斯基:我刚才根据你的问题向你提出了建议。在你的问题中,你没有提到你的全部要求。但您在问题中提出的问题也可以通过上面的代码来实现。似乎是正确的,但我在print\r($results)中得到了空数组。您有空数组吗?这是不可能的!我为你做了新的更新的例子?也许你看到了第一个?你们看到网上的例子了吗?
 if (array_key_exists(2, $newArray)) {
   // Do whatever you want
 }
foreach($zdjecia as $zdjecie) {
   foreach($zdjecie as $key=>$value) {
      if($key == "image-type" && $value == "2") {
         $zdjecie_aukcji = $zdjecie['image-url'];
      }
   }
}