2017-08-28 72 views
0

數組索引我有以下陣列從數據庫中來:怎麼知道特定值在PHP

Array ( 
    [0] => stdClass Object ( 
     [cSize] => 120x60 
     [cFilename] => 29955_120x60.png 
     [dtLastUpdated] => 2017-06-11T18:18:34-07:00 
     [cURL] => http://logos.formetocoupon.com/120x60/29955.png 
    ) 
    [1] => stdClass Object ( 
     [cSize] => 280x210 
     [cFilename] => 29955_280x210.png 
     [dtLastUpdated] => 2017-08-15T23:31:05-07:00 
     [cURL] => http://logos.formetocoupon.com/280x210/29955.png 
    ) 
    [2] => stdClass Object ( 
     [cSize] => 600x450 
     [cFilename] => 29955_600x450.png 
     [dtLastUpdated] => 2017-08-15T23:31:05-07:00 
     [cURL] => http://logos.formetocoupon.com/600x450/29955.png 
    ) 
    [3] => stdClass Object ( 
     [cSize] => 88x31 
     [cFilename] => 29955_88x31.png 
     [dtLastUpdated] => 2017-06-11T18:18:34-07:00 
     [cURL] => http://logos.formetocoupon.com/88x31/29955.png 
    ) 
) 

我想知道其中包含了圖像尺寸120x60數組的索引。

我這樣做

$data=json_decode($value->aLogos); 
$searchValue="120x60"; 
if (($key = array_search($searchValue, $data)) !== false) { 
    print_r($key); 
} 

但它打印什麼。我該如何解決這個問題?任何類型的建議都非常感謝。由於

回答

2

做大致的財產以後這樣嗯,你的第一個問題是,你不能搜索一個數組的數組,但對象的數組。

第二個問題是,即使它是一個數組數組,array_search也不會執行多維數組。

而是考慮在原PHP是這樣的:

$data = json_decode($value->aLogos); 
$searchValue="120x60"; 
foreach($data as $key => $obj) { 
    if ($searchValue == $obj->cSize) { 
     break; 
    } 
} 
echo $key; //holds key of first object with desired value 

另外,檢查出array_search_deep方法在這裏:

+0

鍵名是事先未知的 – RomanPerekhrest

+0

不是我如何解釋問題,但如果這是''array_search_deep()''可以處理沒有問題的情況:-) – Bananaapple

1

您需要使用key功能

foreach ($data as $value){ 
    if ($value->cSize=="120x60"){ 
     echo key($data); 
} 
+0

鍵名稱是預先未知 – RomanPerekhrest

+0

@RomanPerekhrest,關鍵是一個函數接受和數組並返回實際索引 – user10089632

+0

你沒有得到它:'cSize'在概念上是未知的 – RomanPerekhrest