2015-11-07 57 views
0

我覺得我正在失去主意。PHP - 關聯數組中的回聲值

<?php 
print_r($roc_option); 
?> 

打印出這樣的:

陣列([ '類'] => classnew1 [ 'ID'] => idnew1)

但隨後,在下一行,

<?php 
echo $roc_option['class']; 
?> 

打印出任何東西。

任何想法是怎麼回事?

上下文: 這發生在一個foreach循環中。 循環外的類似構造,echo $roc_options[0]['class'];同樣沒有提供。 (大量的調試污物的加入,以保持箱理智)

EDIT

完整上下文

代碼

echo "ln1 -- <br>"; 
    print_r(array_values($roc_options)); 

    echo "<br><br>ln2 -- <br>"; 
    print_r(array_values($roc_options[0])); 

    echo "<br><br>ln3a -- <br>"; 
    echo $roc_options[0]['class']; 

    echo "<br><br>ln3b -- <br>"; 
    echo $roc_options[0][0]; 


    foreach ($roc_options as $roc_option){ 
    echo "<br>inside foreach <br>"; 

    echo "<br><br>ln4 -- <br>"; 
    print_r($roc_option); 

    echo "<br><br>ln5 -- <br>"; 
    echo $roc_option[0]; 

輸出

LN1 - 陣列([0] = > Array(['class'] => classnew1 ['id'] => idnew1 ))

LN2 - 陣列([0] => classnew1 [1] => idnew1)

ln3a -

ln3b -

內部的foreach

LN4 - 陣列( [ '類'] => classnew1 [ 'ID'] => idnew1)

LN5 -

我不明白爲什麼3a,3b和5都是空的。


IT推移和

我切換到var_dumps,被迫在一些新的名字,只是爲了確保表格被正確保存...

CODE:

var_dump($roc_options); 
    echo "ln1 -- <br>"; 
    print_r(array_values($roc_options)); 

    echo "<br><br>ln2 -- <br>"; 
    print_r(array_values($roc_options[0])); 

    echo "<br><br>ln3a -- <br>"; 
    var_dump($roc_options[0]['class']); 

    echo "<br><br>ln3b -- <br>"; 
    var_dump($roc_options[0][0]); 


    foreach ($roc_options as $roc_option){ 
    echo "<br>inside foreach <br>"; 

    echo "<br><br>ln4 -- <br>"; 
    print_r($roc_option); 

    echo "<br><br>ln5 -- <br>"; 
    var_dump($roc_option[0]); 

    echo "<br><br>ln6 -- <br>"; 
    var_dump($roc_option['class']); 

    echo "<br><br>ln7 -- <br>"; 
    var_dump($roc_option["id"]); 

輸出

陣列(1){[0] =>數組(2){[ 「 '類'」] =>串(9)「新類[['''id'「] => string(6)」new id「}} ln1 - Array([0] => Array(['class'] => new class ['id'] =>新的ID ))

LN2 - 陣列([0] =>新類[1] =>新的ID)

ln3a - NULL

ln3b - NULL內部的foreach

LN4 - 陣列([ '類'] =>新類[ 'ID'] =>新的ID)

LN5 - NULL

LN6 - NULL

LN6 - NULL

通知LN4 --- $ roc_option是一個包含兩個項目的數組。 然後查看5-7 我無法用數字索引或鍵名得到數值,無論是單引號還是雙引號。 (當我嘗試不帶引號可言,頁面沒有加載)。

+0

你可以發佈你的foreach循環代碼嗎? – aldrin27

+1

我們需要更多代碼來猜測可能來自哪裏 –

+0

您的'print_r()'輸出缺少逗號和引號等內容,因此沒有任何意義。不要編輯輸出,把它放在你的問題中,因爲它看起來沒有任何感應器 – RiggsFolly

回答

1

編輯:
見差異$array['class']$array["'class'"] 之間

foreach ($options as $optionArray){ 
    var_dump($optionArray['class']); // notice undefined index 
    var_dump($optionArray["'class'"]); // string(9) "classnew1" 
} 

你需要使輸出之間的差別array_valuesprint_r發出。

假設下面的結構的基礎上,你的輸出,請參閱以下的邏輯:

$options = array(
    array(
     'class' => 'classnew1', 
     'id' => 'idnew1' 
    ) 
); 

print_r($options); 

print_r(array_values($options)); 

print_r(array_values($options[0])); 

foreach ($options[0] as $option){ 
    print $option . PHP_EOL; 
} 

,將打印出內的值。

如果你想延長循環,而不是依靠第一指標,試試這個

foreach ($options as $optionArray){ 
    print $optionArray['class'] . '-' . $optionArray['id']. PHP_EOL; 
} 

或者,如果你想打印出一個值,你可以這樣做

print $options[0]['id']; 
+0

我知道它應該如何工作。不過,請看最新的更新。出於某種原因,我無法訪問$ roc_option中的值。 –

+1

你在數組索引中有單引號,我會編輯我的答案來說明。應該早點見到它,道歉:) –

+0

哦...哇 - 那些絕對不應該在那裏。我需要看看我的表單輸入。 –