2016-02-02 78 views
1

我不知道如果我這個正確題爲...搜索鍵對數組返回值不是關鍵PHP

我有此數組:

array (
     'fu' => 'bar', 
     'baz' => 
      array (
       0 => 'bat', 
      ), 
) 

而且我可以搜索它使用:

echo array_search('bar', $myarray); 

將返回酒吧的關鍵,那就是:

fu 

但我如何尋找fu的價值?

如果我嘗試:

echo array_search('fu', $myarray); 

我沒有得到任何結果。

!!編輯根據要求顯示更多的代碼!

$data = '{fu:"bar",baz:["bat"]}';  
$parsed = array();  
parse_jsobj($data, $parsed);  

現在如果我使用:

var_export($parsed); 

我得到:

array (
     'fu' => 'bar', 
     'baz' => 
      array (
       0 => 'bat', 
      ), 
) 

如果我用這個來代替:

print_r($parsed); 

我得到:

Array ([fu] => bar [baz] => Array ([0] => bat)) 

而且我試圖返回福的價值是這樣的:

echo array_search('fu', $parsed); 

但我沒有得到任何結果。

像明智的,如果我嘗試:

echo $parsed['fu']; 
echo $parsed[0]->fu; 
echo $parsed[0]; 

這個功能似乎只返回鍵,並不會返回值。也許我在尋找不同的功能?

我使用的類是HERE

+0

'{fu:「bar」,baz:[「bat」]}'你確定這是json字符串嗎?它是無效的,'fu'和'baz'缺少引用 – Ghost

+0

@Ghost這就是他使用鏈接類的原因;它應該解析無效的json。 –

+0

@RichardTheobald如果你已經有了這個類生成的最後一個數組,應該是相當簡單的,只要把它當作一個普通數組 – Ghost

回答

1
echo $myarray[array_search('bar', $myarray)]; 

我不知道爲什麼你要做到這一點,雖然,因爲你已經知道福的結果。我認爲它更可能實際上要做到這一點:

echo $myarray['fu']; 

編輯: 離開上述留給後人。編輯後更多的信息,希望這將工作:

$parsed2 = $parsed; 
$parsed = array(); 
foreach($parsed2 as $key=>$value){ 
    if(is_string($key) || is_numeric($key)) { 
     $parsed[$key] = $value; 
    } else { 
     $parsed["'".$key."'"] = $value; 
    } 
} 
unset($parsed2); 
echo $parsed['fu']; 

如果這不起作用,那麼我沒有更多的想法。

+0

我已經嘗試了這兩種方法,但它不起作用。我在這裏使用這個類 - http://stackoverflow.com/questions/1554100/parsing-javascript-not-json-in-php將一個沒有密鑰對的javascript數組轉換成一個php可讀數組。不,我其實不會在現實世界中知道fu的結果。 – Grant

+0

運行'var_dump($ myarray);'並確保數組顯示你期望的結果 –

+0

轉儲是我在問題 – Grant