有没有一种简单的方法可以使用PHP从数组中删除元素,这样foreach ($array)就不再包含该元素了?
我认为设置它null会这样做,但显然它不起作用.
我遍历一个对象数组,并希望根据它的'id'属性删除其中一个对象,但我的代码不起作用.
foreach($array as $element) {
foreach($element as $key => $value) {
if($key == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($element);//this doesn't work
unset($array,$element);//neither does this
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议.谢谢.
我有一个foreach循环设置通过我的数组,检查某个链接,如果它发现它从数组中删除该链接.
我的代码:
foreach($images as $image)
{
if($image == 'http://i27.tinypic.com/29yk345.gif' ||
$image == 'http://img3.abload.de/img/10nx2340fhco.gif' ||
$image == 'http://i42.tinypic.com/9pp2456x.gif')
{
unset($images[$image]);
}
}
Run Code Online (Sandbox Code Playgroud)
但它并没有删除数组.它可能与某些事情有关$images[$image],因为这不是数组输入的关键,只有内容?有没有办法在不加入计数器的情况下做到这一点?
谢谢.
编辑:谢谢大家,但现在我有另一个问题,其中数组条目实际上没有被删除.
我的新代码:
foreach($images[1] as $key => $image)
{
if($image == 'http://i27.tinypic.com/29yk345.gif')
$image == 'http://img3.abload.de/img/10nx2340fhco.gif' ||
$image == 'http://i42.tinypic.com/9pp2456x.gif')
{
unset($images[$key]);
}
}
Run Code Online (Sandbox Code Playgroud)
$ images现在是一个二维数组,因此我需要$ images [1].我已经检查过并且它成功地绕过了数组元素,并且一些元素实际上有一些我希望删除的URL,但它们并没有被删除.这是我的$images阵列:
Array
(
[0] => Array
(
[0] => useless
[1] => useless
[2] => useless
[3] => useless
[4] => useless
)
[1] => Array
( …Run Code Online (Sandbox Code Playgroud) 所以这是我的代码:
<?php
$arr = array(array(2 => 5),
array(3 => 4),
array(7 => 10));
foreach ($arr as $v) {
$k = key($v);
if ($k > 5) {
// unset this element from $arr array
}
}
print_r($arr);
// now I would like to get the array without array(7 => 10) member
Run Code Online (Sandbox Code Playgroud)
如您所见,我从一个单键=>值数组的数组开始,我循环遍历此数组并获取当前元素的键(这是一个单项数组).
我需要用高于5的键取消数组的元素,我怎么能这样做?我可能还需要删除值小于50的元素或任何其他条件.基本上我需要能够获得当前数组项的键,它本身就是一个带有单个项的数组.
我在foreach循环中通过引用访问数组,但unset()函数似乎不起作用:
foreach ( $this->result['list'] as &$row ) {
if ($this_row_is_boring) {
unset($row);
}
}
print_r($this->result['list']); // Includes rows I thought I unset
Run Code Online (Sandbox Code Playgroud)
想法?谢谢!
我有一个简单的数组,其中包含所有国家/地区的名称以及每个国家/地区在我的网站上注册的用户总数.它是这样的:
Array (
[1] => Array ( [name] => Afghanistan [total] => 3 )
[2] => Array ( [name] => Albania [total] => 0 )
)
Run Code Online (Sandbox Code Playgroud)
而且,我正在尝试删除拥有0个用户的数组元素(国家/地区).
我已尝试使用此代码,但它不起作用:
foreach($country as $row) {
if ($row['total'] == 0) {
unset($row);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
您好我试图使用foreach循环删除数组元素,但它什么也没做.我需要索引完全消失而不是使其为null.这是我尝试过的:
foreach ($_SESSION['cart'] as &$arrays3) {
if($arrays3['id'] == $id){
unset($arrays3);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,每个键的数组值包含一个关联数组.
我有一个foreach循环,如果满足某些条件,我想从数组中取消设置项目,如下所示:
foreach ($array as $element) {
if (conditions) {
unset($element);
}
}
Run Code Online (Sandbox Code Playgroud)
但是之后的元素并没有被取消.我究竟做错了什么?我是否取消了对实际元素或类似内容的引用?
我已经将从mySQL查询的一些元素(水果名称)插入到数组中.现在,我想从数组中删除某些项目.如果数组存在,我想删除'Apple'和'Orange'.这是我尝试但我收到错误消息.
Array Example:
Array ( [1] => Orange [2] => Apple)
foreach($terms as $k => $v)
{
if (key($v) == "Apple")
{
unset($terms[$k]);
}
elseif( key($v) == "Orange")
{
unset($terms[$k]);
}
}
>>> Warning: key() expects parameter 1 to be array, string given //same error repeated 4 times
Run Code Online (Sandbox Code Playgroud)
我在这里提到了这个链接:如何在foreach循环中删除数组元素? 如果有人能指出我做错了什么,我将不胜感激.