players
將爲空或逗號分隔列表(或單個值)。檢查是否空的最簡單方法是什麼?我假設只要將$gameresult
數組取入$gamerow
,我就可以這麼做?在這種情況下,如果它是空的,跳過$playerlist
可能會更高效,但爲了爭論起見,如何檢查數組是否爲空?如何使用PHP檢查數組是否爲空?
$gamerow = mysql_fetch_array($gameresult);
$playerlist = explode(",", $gamerow['players']);
players
將爲空或逗號分隔列表(或單個值)。檢查是否空的最簡單方法是什麼?我假設只要將$gameresult
數組取入$gamerow
,我就可以這麼做?在這種情況下,如果它是空的,跳過$playerlist
可能會更高效,但爲了爭論起見,如何檢查數組是否爲空?如何使用PHP檢查數組是否爲空?
$gamerow = mysql_fetch_array($gameresult);
$playerlist = explode(",", $gamerow['players']);
如果您只需要檢查是否有數組
if (empty($playerlist)) {
// list is empty.
}
中的任何元素。如果你需要檢查之前清理出空值(通常是爲了防止怪異的字符串):
foreach ($playerlist as $key => $value) {
if (empty($value)) {
unset($playerlist[$key]);
}
}
if (empty($playerlist)) {
//empty array
}
empty($gamerow['players'])
PHP中的空數組是虛僞的,因此您甚至不需要像其他人所建議的那樣使用empty()
。
<?php
$playerList = array();
if (!$playerList) {
echo "No players";
} else {
echo "Explode stuff...";
}
// Output is: No players
PHP的empty()
確定是否變量不存在或具有falsey的值(如array()
,0
,null
,false
等)。
在大多數情況下,您只需要檢查!$emptyVar
。如果變量可能沒有設置,並且您不想觸發E_NOTICE
,則使用empty($emptyVar)
;海事組織這通常是一個壞主意。
我希望這不會在一些標準改變......這將是痛苦的 –
,如果你要檢查數組的內容,你可以使用:
$arr = array();
if(!empty($arr)){
echo "not empty";
}
else
{
echo "empty";
}
在這裏看到: http://codepad.org/EORE4k7v
is_array($detect) && empty($detect);
一些像樣的答案,只是想我會當PHP確定數組是否爲空時,擴展一點以更清楚地解釋。
主注:
用鑰匙(或多個密鑰)的陣列將被確定爲NOT空由PHP。
由於數組值需要存在鍵,只有在沒有鍵(AND因此沒有值)的情況下,數組中是否有值才能確定它是否爲空。
因此,使用empty()
檢查數組並不簡單告訴您是否有值,它會告訴您數組是否爲空,並且鍵是數組的一部分。
因此,在決定使用哪種檢查方法之前,請考慮如何生成數組。
EG一個數組將當用戶提交您的HTML表單時,每個表單域有一個數組名稱(即name="array[]"
)時提供鍵。
A 非空將爲每個字段生成數組,因爲每個表單字段的數組都會自動遞增鍵值。
採取這些陣列例如:
/* Assigning some arrays */
// Array with user defined key and value
$ArrayOne = array("UserKeyA" => "UserValueA", "UserKeyB" => "UserValueB");
// Array with auto increment key and user defined value
// as a form field would return with user input
$ArrayTwo[] = "UserValue01";
$ArrayTwo[] = "UserValue02";
// Array with auto incremented key and no value
// as a form field would return without user input
$ArrayThree[] = '';
$ArrayThree[] = '';
如果回聲出用於上述陣列的陣列的鍵和值,將得到以下:
陣列的一個:
[UserKeyA] => [UserValueA]
[UserKeyB] => [UserValueB]陣列中的兩個:
[0] => [UserValue01]
[1] => [UserValue02]陣3:
[0] => []
[1] => []
並與empty()
返回以下結果測試上述陣列:
陣列中的一個:
$ ArrayOne不是空陣列中的兩個:
$ ArrayTwo不是空陣3:
$ ArrayThree不是空
陣列將永遠是空的,當你分配一個數組,但不使用它此後,如:
$ArrayFour = array();
這將是空的,即PHP將使用如果empty()
以上時返回TRUE。因此,如果你的數組有密鑰 - 無論是通過例如一個表單的輸入名稱,或者如果你手動分配它們(即創建一個數據庫列名作爲鍵的數組,但沒有數據庫中的值/數據),那麼該數組將會不是empty()
。
在這種情況下,您可以在foreach循環數組,測試每個鍵是否有值。無論如何,如果您需要遍歷數組,那麼這是一個好方法,可能會檢查密鑰或清理數據。
但是它是不是最好的方法,如果你只需要知道「是否存在價值」返回TRUE或FALSE。 有多種方法可以確定數組是否有任何值,當它知道它有密鑰時。函數或類可能是最好的方法,但是一如既往,它取決於您的環境和確切的需求,以及其他事情,比如您當前對數組(如果有的話)執行的操作。
這裏是它使用非常少的代碼檢查,如果數組有值的方法:
使用array_filter()
:
在迭代將它們傳遞給回調函數數組中的每個值。如果回調函數返回true,則數組中的當前值將返回到結果數組中。數組鍵被保留。
$EmptyTestArray = array_filter($ArrayOne);
if (!empty($EmptyTestArray))
{
// do some tests on the values in $ArrayOne
}
else
{
// Likely not to need an else,
// but could return message to user "you entered nothing" etc etc
}
在所有這三個例子陣列運行array_filter()
(在這個答案的第一個代碼塊創建)結果如下:
陣列中的一個:
$ arrayone不是空陣列二:
$ arraytwo不爲空第三陣列:
$ arraythree是空
因此,當沒有值,是否有鍵或不使用array_filter()
創建一個新的數組,然後檢查新數組是空的顯示,如果有在人的任何值原始數組。
這並不理想,有點麻煩,但如果你有一個巨大的數組,並且不需要爲了任何其他原因而循環它,那麼就代碼而言這是最簡單的。
我不是在檢查費用有經驗,但它是很好的瞭解使用array_filter()
和foreach
如果找到一個值檢查之間的差異。
顯然基準將需要各種參數,對小型和大型陣列,並且當有值,而不是等
我使用此代碼
$variable = array();
if(count($variable) == 0)
{
echo "Array is Empty";
}
else
{
echo "Array is not Empty";
}
但要注意的是,如果數組有大量的密鑰,與其他答案相比,這些代碼會花費很多時間對它們進行計數。
以上解決方案對我無效。而是我用更可靠的方式(它可能有移動的開銷):
$countarr = count($newArr); // Count the elements in an array.
$checkarr = "" ; //Initialize the value of variable to blank.
for($x=0;$x<$countarr;$x++)
{
$checkarr = $newArr1[$x] ;
if($checkarr != "")
{
// do stuff if array is not empty.
}
}
我發現無法解決現有答案的*無*工作。爲了使這個答案工作,count($ newArr)'必須大於0,這個答案(http://stackoverflow.com/a/2216060/369450)是在5年前發佈的。 – cpburnz
如果你想確定你正在測試變量是否真的明確地空數組,你可以使用這樣的事情:
if ($variableToTest === array()) {
echo 'this is explicitly an empty array!';
}
$gamerow = mysql_fetch_array($gameresult);
if (!empty(($gamerow['players'])) {
$playerlist = explode(",", $gamerow['players']);
}else{
// do stuf if array is empty
}
您可以使用array_filters這適用於所有情況的偉大工程
$ray_state = array_filter($myarray);
if (empty($ray_state)) {
echo 'array is empty';
}else{
echo 'array is not empty';
}
如何:
DepartmentPerSchool = array(); (empty(is_array($DepartmentPerSchool))) ? $DepartmentPerSchool //or echo is not empty : array('not set'=>'Not set. Contact Admin'); //or echo is empty
爲什麼沒有人說這樣的回答:
$array = [];
if($array == []) {
// array is empty
}
我認爲最好的辦法,以確定如果數組爲空或不爲使用COUNT()像這樣:
if(count($array)) {
return 'anything true goes here';
}else {
return 'anything false';
}
你不應該用空嗎?計數對於大型陣列來說需要花費更長的時間。 –
完成。我也改變了它,因爲你不必使用isset和東西。 –
考慮到他的代碼示例,該變量將被設置,因此您不需要使用'empty()'。 – Cobby