下面是我輸出這個陣列的代碼:
// 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
(
[0] => stdClass Object
(
[id] => 1
)
)
1111,
Array
(
[0] => stdClass Object
(
[id] => 1132
)
[1] => stdClass Object
(
[id] => 1133
)
)
我試圖通過這樣做來完成,但沒有得到預期的結果。
foreach ($admin_data as $key) {
if (count($admin_data) < 2) {
unset($admin_data);
}
}
預期結果:我想洗掉整個陣列元素,其中陣列鍵小于 2。我希望只獲得鍵數超過 1 的陣列,如下所示:
1111,
Array
(
[0] => stdClass Object
(
[id] => 1132
)
[1] => stdClass Object
(
[id] => 1133
)
)
uj5u.com熱心網友回復:
我不確定我是否理解,但是如果您有一個陣列陣列并且想要洗掉少于 2 個元素的內部陣列,您可以這樣做:
<?php
$original = [
["a"],
["b", "c"],
];
$filtered = array_filter(
$original,
function ($innerArray) {
return count($innerArray) >= 2;
}
);
print_r($filtered);
結果是
Array
(
[1] => Array
(
[0] => b
[1] => c
)
)
PHP小提琴
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 an array with one item */
foreach ($admin_data as $key => $value) {
if (is_array($value) && count($value) === 1) {
unset($admin_data[$key]);
}
}
/* create a new array with the valid items */
$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/qukuanlian/315070.html
上一篇:當我嘗試在CodeIgniter中使用驅動程式時出錯
下一篇:我目前收到此錯誤System.InvalidOperationException:'Fill:SelectCommand.Connectionpropertyhasnotbeeninitia
