2015-05-10 39 views
0

我想了解這個簡單的代碼,如果有人可以解釋這一段代碼給初學者。請簡單的代碼與我聯繫,並試圖理解這一點。PHP一些幫助理解這個!isset

我明白這些循環在做什麼,只是!isset($value[$values])部分讓我絆倒了。

有人可以向我解釋!isset怎麼回事,爲什麼沒有設置?

$array1 = [1, 2, 3]; 

$array2 = [4, 5, 6]; 

$array3 = [7, 8, 9]; 

$value = []; 

foreach ([$array1, $array2, $array3] as $arr) { 
    foreach ($arr as $values) { 

     if (!isset($value[$values])) { // Why is this part of the code not set? 
     ... 
     } 

    } 
} 

從我的理解是:

1)$value[]值是一個空數組

2)$value[$values]您正在傳遞$值(1,2,3,4 ,5 ...)作爲$ value數組的$ key

3)當我在內部foreach循環中var_dump $ value [$ values]時,我得到Notice: Undefined index:爲什麼我得到這個?該指數應該是數字的權利?

4)最後,爲什麼$value[$values]未被設置?

+0

它沒有設置,因爲它沒有設置。嘗試手動逐步循環。當你考慮一分鐘時,這是有道理的。 –

+0

是否因爲您正在爲數值鍵「[$ values]」賦值'$ value'數組而沒有值? – walter

+0

不可以。您不會將任何內容分配給'$ value'或其元素。也許你感到困惑,因爲'$ value'是一個數組,'$ values'是一個標量,所以兩者都是錯誤的。你收到的兩個答案都是正確的。你認爲'isset'是什麼? –

回答

1

$value是一個空數組。因此,在爲該鍵分配值之前,您在該數組內調用的任何鍵都不會被設置。

$value[$values]正在通過[ 1, 2, 3 ][ 4, 5, 6 ][ 7, 8, 9 ],所以你在呼喚$value[1]$value[2]

你得到undefined index因爲索引是不確定的。 PHP處理這個問題併發布Notice。其他語言(例如Java)會發出Null Pointer Exception

最後,因爲$value是一個空數組,並且該鍵未設置,所以isset()返回false。然後!isset()將返回true,因此代碼將執行。

+0

對於未定義的索引部分 - 索引不能被認爲是定義的,除非我提供了一個值和密鑰?而你最後的陳述,你認爲$值是什麼,是一個空陣列?這不僅僅是一個帶有數字的$變量嗎? 'foreach($ arr as $ values)' – walter

+0

我猜你的意思是$ value是你上一次聲明中的空數組。 – walter

+0

感謝您的詳細解釋。 – walter

2

當你運行這段代碼時,$ value是空的,所以你測試的所有值都是未設置的,在這個數組中沒有鍵1,2,3,4,5 ...... 所以這就是爲什麼你得到未定義的索引錯誤...

+0

對,我現在明白了,它沒有被分配。謝謝。 – walter