Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 取消设置对象中的属性_Php_Arrays_Unset - Fatal编程技术网

Php 取消设置对象中的属性

Php 取消设置对象中的属性,php,arrays,unset,Php,Arrays,Unset,我正在尝试取消对象中的某些内容 foreach($curdel as $key => $value) { if ($value == $deletedinfo[0]) { print_r($key); print_r($curdel); unset($curdel[$key]); } } 与预期一样,$key返回正确的值(0),而$curdel返回整个数组。但是试图取消设置$curdel[$key]会破坏一切。即使试图打印($curdel[$key])也会破坏一切

我正在尝试取消对象中的某些内容

foreach($curdel as $key => $value) {
if ($value == $deletedinfo[0]) {
    print_r($key);
    print_r($curdel);
    unset($curdel[$key]);
}
}
与预期一样,
$key
返回正确的值(0),而
$curdel
返回整个数组。但是试图取消设置
$curdel[$key]
会破坏一切。即使试图打印($curdel[$key])也会破坏一切,我还缺少什么

我的对象如下所示:

stdClass Object ( [0] => IFSO14-03-21-14.csv [2] => EB_Bunny.jpg [3] => EB_White_Bear.jpg )

该问题的可能解决方案是添加对
$value
变量的引用:

foreach($curdel as $key => &$value) { //Note & sign
   if ($value == $deletedinfo[0]) {
       print_r($key);
       print_r($curdel);
       unset($curdel[$key]);
   }
}
&$value
表示对实际数组元素的引用

答案也基于此(类似)示例:

更新

基于您的输入(STDClass而不是array):只需首先将
$curdel
强制转换为array:

$curdel = (array) $curdel ;
对象中的数字索引有点无效,只能通过以下特殊语法访问:

$object->{'0'} ;

这是一种非常糟糕的做法。

解决该问题的可能方法是添加对
$value
变量的引用:

foreach($curdel as $key => &$value) { //Note & sign
   if ($value == $deletedinfo[0]) {
       print_r($key);
       print_r($curdel);
       unset($curdel[$key]);
   }
}
&$value
表示对实际数组元素的引用

答案也基于此(类似)示例:

更新

基于您的输入(STDClass而不是array):只需首先将
$curdel
强制转换为array:

$curdel = (array) $curdel ;
对象中的数字索引有点无效,只能通过以下特殊语法访问:

$object->{'0'} ;
这是一种非常糟糕的做法。

而不是:

unset($curdel[$key]);
尝试:

数组通过[]访问/修改,但对象和类属性通过->

访问,而不是:

unset($curdel[$key]);
尝试:



数组是通过[]访问/修改的,但是对象和类属性是通过->

什么意思-打破一切?有真正的错误信息吗?会破坏一切吗?错误是什么?没有错误,在我尝试后没有任何渲染。print\u r$curdel返回:
stdClass对象([0]=>IFSO14-03-21-14.csv[2]=>EB\u Bunny.jpg[3]=>EB\u White\u Bear.jpg)
因此对于以后的问题,这个数据结构是一个具有数字属性的对象,而不是一个“对象数组”。我怀疑如果你使用这个短语,人们会认为你指的是一个实现接口的类。你是什么意思-破坏一切?有真正的错误信息吗?会破坏一切吗?错误是什么?没有错误,在我尝试后没有任何渲染。print\u r$curdel返回:
stdClass对象([0]=>IFSO14-03-21-14.csv[2]=>EB\u Bunny.jpg[3]=>EB\u White\u Bear.jpg)
因此对于以后的问题,这个数据结构是一个具有数字属性的对象,而不是一个“对象数组”。我怀疑如果你使用这个短语,人们会认为你指的是一个实现接口的类。foreach和if似乎不是两个print\r的问题。说真的,请解释一下你有什么输入以及你需要得到什么最终结果。发布更多可能导致问题的代码,我们将帮助您
破坏一切
错误\u未找到
根据当时可用的信息,我认为这是一个很好的答案:
对象!=对象数组
!foreach和if似乎不是两个印刷品即将发行的问题。认真地说,只需解释一下你有什么投入以及你需要得到什么最终结果。发布更多可能导致问题的代码,我们将帮助您
破坏一切
错误\u未找到
根据当时可用的信息,我认为这是一个很好的答案:
对象!=对象数组
!这家伙,这家伙知道怎么回事,这家伙,这家伙知道怎么回事。