2011-11-03 69 views
0

我正在一個網站上實現memcached,我正在緩存特定查詢的結果,這是工作很好,但我有問題放在一起的代碼來設置變量我需要使緩存可用。分解陣列雖然

我的陣列是如下,其中包含兩組數據:

Array ([0] => Array ([0] => 9126 [id] => 9126 [1] => Oh penguin, you so silly. [title] => Oh penguin, you so silly. [2] => November-01-2011-00-14-09-ScreenShot20111031at9.jpg [path] => November-01-2011-00-14-09-ScreenShot20111031at9.jpg) [1] => Array ([0] => 9131 [id] => 9131 [1] => Reasons you die... [title] => Reasons you die... [2] => November-01-2011-00-17-04-ScreenShot20111031at8.jpg [path] => November-01-2011-00-17-04-ScreenShot20111031at8.jpg)) 

我可以手動設置,並呼籲他們這樣的:

$id = $clean[0][0]; 
$title = $clean[0][1]; 
$path = $clean[0][2]; 

,但我有問題,寫一WHILE循環可以通過並動態設置變量。我也嘗試了一個FOR EACH的聲明無濟於事:

for each($clean as $image){ 
$id = $image->id; 
$path = $image->path; 
$title = $image->title; 
echo "THIS IS YOUR FREAKING ID $id THIS IS YOUR TITLE $title THIS IS YOUR PATH $path"; 
} 

任何見識?

編輯:

的解決方案是不是叫他們爲對象,如所指出的,變化中引用它們是這樣的:

$id = $image["id"]; 
$path = $image["path"]; 
$title = $image["title"]; 

乾杯。

+0

什麼樣的問題? – gereeter

+0

你究竟做了什麼? – str

+0

@str增加了我嘗試的FOR EACH。 – Jared

回答

0

您可以在保存到緩存之前序列化整個數組,然後在從緩存中檢索時進行反序列化。然後只需按照您所指示的參考值。

+0

乾淨的變量是非序列化的結果'$乾淨=(unserialize($ cachedResults));'通過正確引用它。 – Jared

+0

啊啊!根據您更新的OP,爲什麼使用對象語法引用數組元素?而不是'$ image-> id',它應該是'$ image ['id']'。 –

0

因爲每個人都應該爲你服務。如果你需要迭代$ clean,那麼只需要換個foreach即可。

$arr = $clean[0]; 
foreach ($arr as $value) { 
    echo $value; // or in your case set 
} 
1
$array = array( 
      array (0 => 9126, 
        'id' => 9126, 
        1 => 'Oh penguin, you so silly.', 
        'title' => 'Oh penguin, you so silly.', 
        2 => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg', 
        'path' => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg'), 
      array (0 => 9126, 
        'id' => 9126, 
        1 => 'Oh penguin, you so silly.', 
        'title' => 'Oh penguin, you so silly.', 
        2 => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg', 
        'path' => 'November-01-2011-00-14-09-ScreenShot20111031at9.jpg') 
); 

foreach($array as $row) 
{ 
    // Based on your array, you can either do: 
    echo $row['id'] . ' ' . $row['title'] . $row['path']. "\n"; 
    echo $row[0] . ' ' . $row[1] . ' ' . $row[ 2 ] . "\n"; 
}