在数组上使用 unset(),但它保留值
Using unset() on an array, but it keeps the value
如果某个对象的属性之一为 null 或空,我将尝试从数组中删除该对象,这是代码。
已使用此函数对数组进行排序:
function sortArray($c1, $c2)
{
return ($c1->propertyToCheck < $c2->propertyToCheck);
}
万一它改变了什么。
$myArray = array();
...
// Add values to the array here
...
usort($myArray,"sortArray");
for($i = 0; $i < count($myArray ); $i++)
{
if(empty($myArray[$i]->propertyToCheck))
{
unset($myArray[$i]);
// var_dump($myArray[$i]) returns NULL
}
}
echo json_encode($myArray);
// Returns the entire array, even with the values that shouldn't be there.
代码在函数内部,但数组是在所述函数内部创建的。
我正在使用 echo json_encode($myArray) 将值发送回 AJAX,但发送的数组是包含每个对象的整个数组。
count($myArray)
就是"problem"。
一旦 unset() 为 "reached" ,数组中就会少一个元素,因此下一次调用 count($myArray)
将 return 前一次迭代的 n-1 -> 你的循环不会到达数组的末尾。
您至少有三个选择(按我的喜好升序排列)
一)
$maxIdx = count($myArray);
for($i = 0; $i < $maxIdx; $i++) {
b)
foreach( $myArray as $key=>$obj ) {
if(empty($obj->propertyToCheck)) {
unset($myArray[$key]);
c)
$myArray = array_filter(
$myArray,
function($e) {
return !empty($e->propertyToCheck);
}
);
(...还有更多)
如果某个对象的属性之一为 null 或空,我将尝试从数组中删除该对象,这是代码。
已使用此函数对数组进行排序:
function sortArray($c1, $c2)
{
return ($c1->propertyToCheck < $c2->propertyToCheck);
}
万一它改变了什么。
$myArray = array();
...
// Add values to the array here
...
usort($myArray,"sortArray");
for($i = 0; $i < count($myArray ); $i++)
{
if(empty($myArray[$i]->propertyToCheck))
{
unset($myArray[$i]);
// var_dump($myArray[$i]) returns NULL
}
}
echo json_encode($myArray);
// Returns the entire array, even with the values that shouldn't be there.
代码在函数内部,但数组是在所述函数内部创建的。
我正在使用 echo json_encode($myArray) 将值发送回 AJAX,但发送的数组是包含每个对象的整个数组。
count($myArray)
就是"problem"。
一旦 unset() 为 "reached" ,数组中就会少一个元素,因此下一次调用 count($myArray)
将 return 前一次迭代的 n-1 -> 你的循环不会到达数组的末尾。
您至少有三个选择(按我的喜好升序排列)
一)
$maxIdx = count($myArray);
for($i = 0; $i < $maxIdx; $i++) {
b)
foreach( $myArray as $key=>$obj ) {
if(empty($obj->propertyToCheck)) {
unset($myArray[$key]);
c)
$myArray = array_filter(
$myArray,
function($e) {
return !empty($e->propertyToCheck);
}
);
(...还有更多)