如果他的某个属性为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,但发送的数组是包含其中每个对象的整个数组。
答案 0 :(得分:3)
count($myArray)
是“问题”
一旦unset()被“到达”,则数组中有一个元素较少,因此对count($myArray)
的下一次调用将返回前一次迭代的n-1 - &gt;你的循环没有到达数组的末尾
您至少有三个选择(按照我的偏好的升序排列)
A)
$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);
}
);
(......还有更多)