下面是我的代碼,輸出這個陣列
// update users
$where_in = array('1102',' ')。
$admin_data = $this->db->select('id,email,domain') -> where_in('id',$where_in)->get('users')-> result();
echo "<pre>";print_r($admin_data)。
當前輸出陣列
1102,
Array[/span
(
[0] => stdClass Object
(
[id] => 1
)
)
1111,
Array[/span
(
[0] => stdClass Object
(
[id] => 1132[/span
)
[1] => stdClass Object
(
[id] => 1133[/span
)
)
我想通過這樣做來完成,但沒有得到預期的結果
foreach ($admin_data as $key) {
if (count($admin_data) < 2) {
unset($admin_data)。
}
}
**預期的結果,我想洗掉整個陣列元素,其中陣列鍵小于2希望得到只有一個以上的鍵數的陣列,如下所示**
1111,
Array[/span].
(
[0] => stdClass Object
(
[id] => 1132[/span
)
[1] => stdClass Object
(
[id] => 1133[/span
)
)
uj5u.com熱心網友回復:
我不確定我是否理解,但是如果你有一個陣列,并且想移除內部元素少于2的陣列,你可以這樣做:
$original = [
["a"/span>]。
["b"/span>, "c"/span>]。
];
$filtered = array_filter(
$original,
function ($innerArray) {
return count($innerArray) >=2;
}
);
print_r($filtered)。
結果是
Array
(
[1] => Array[/span
(
[0] => b
[1] => c
)
)
uj5u.com熱心網友回復:
再次檢查你的代碼,它包含了一些邏輯上的問題:
foreach ($admin_data as $key) {
if (count($admin_data) < 2) {
unset($admin_data)。
}
}
如果$admin_data有一個專案,if (count($admin_data) < 2)測驗為真,
unset($admin_data);被執行。這意味著(簡化)$admin_data的所有內容被洗掉。
如果$admin_data有兩個或更多的專案,if (count($admin_data) < 2)測驗永遠不會是真的。而且每次迭代都是如此。
。
這兩種情況都是不符合邏輯的,因為你不需要foreach回圈,這個測驗就可以作業。此外,你可能不希望洗掉$admin_data的內容。
你需要做的,是遍歷$admin_data項,檢查該項是否是一個陣列,如果該陣列有一個專案,則從$admin_data陣列中洗掉該專案。或者你可以創建另一個只包含有效專案的陣列。
下面是一個可能的例子。
這里是一個可能的例子:
/* unset the item if it is a array with one item */
foreach ($admin_data as $key => $value) {
if (is_array($value) && count($value) ==1) {
unset($admin_data[$key] )。)
}
}
/* 用有效的專案創建一個新的陣列*/。
$valid_admin_data = [] 。
foreach ($admin_data as $key => $value) {
if (is_array($value) && count($value) > 1) {
$valid_admin_data[$key] = $value。
}
我還建議你再次閱讀foreach檔案。另外,變數的名稱要一致,因為這有助于避免誤解:例如,foreach ($admin_data as $key)可以更好地命名為foreach ($admin_data as $value),因為通過一個變數,你可以提取當前專案的值。
uj5u.com熱心網友回復:
我相信你正試圖取消你的"$admin_data "陣列中的元素,但是你在陣列本身上呼叫unset。如果你把陣列元素的索引和元素本身一起傳入你的回圈,那么你可以檢查該元素是否少于兩個內部元素,并相應地取消該元素。
$elementsToRemove=[];
foreach($admin_data as $index=> $key) {
if (count($key) < 2) {
$elementsToRemove[] = $index;
}
}
$newArray = array_diff_key($admin_data, array_flip($elementsToRemove) ) 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/328406.html
標籤:
上一篇:EXCEL:如果"日期欄"中的日期在1月10日到2月10日之間,則在"月份欄"中回傳"JAN"--其余年份以此類推。
