标签: unset

取消设置变量组

可能重复:
您可以在PHP中一次取消设置()许多变量吗?

$var1 = $var2 = $tvar3 = null;
Run Code Online (Sandbox Code Playgroud)

可以删除这样的变量吗?

有没有更好的方法来取消几个变量?

php variables null unset

2
推荐指数
1
解决办法
440
查看次数

PHP数组未设置

这里的代码(在php 5.3.5和5.2.13中执行):

$res = array(1, 2, 3);

unset($res[0]);

for($i = 0; $i < sizeof($res); $i++)
{
  echo $res[$i] . '<br />';
}
Run Code Online (Sandbox Code Playgroud)

结果我看到了

<br />2<br />
Run Code Online (Sandbox Code Playgroud)

为什么只有一个元素,并且首先是空的?不明白.做的时候:

print_r($res);
Run Code Online (Sandbox Code Playgroud)

看到:

Array ( [1] => 2 [2] => 3 )
Run Code Online (Sandbox Code Playgroud)

Thanx寻求帮助!

php arrays unset array-unset

2
推荐指数
1
解决办法
6198
查看次数

取消设置空数组元素

我正在使用$_FILES,有时由于我的表单上的空文件输入,数组有空数组元素.我试图取消这些元素.

我试过这些代码片段:

foreach($_FILES['images']['name'] as $image)
{
    if(empty($image))
    {
        unset($image);
    }
}

foreach($_FILES['images']['name'] as $image)
{
    if($image == "")
    {
        unset($image);
    }
}

foreach($_FILES['images']['name'] as $image)
{
    if(!$image)
    {
        unset($image);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是数组总是带有空元素.实际上是否有一种使用PHP删除空$ _FILES数组元素的合理方法?

php arrays unset

2
推荐指数
1
解决办法
1457
查看次数

unset()静态变量不起作用?

请参阅此代码:http: //codepad.org/s8XnQJPN

function getvalues($delete = false)
{
   static $x;
   if($delete)
   {
      echo "array before deleting:\n";
      print_r($x);
      unset($x);
   }
   else
   {
      for($a=0;$a<3;$a++)
      {
         $x[]=mt_rand(0,133);
      }
   }
}

getvalues();
getvalues(true); //delete array values
getvalues(true); //this should not output array since it is deleted
Run Code Online (Sandbox Code Playgroud)

输出:

array before deleting:
Array
(
    [0] => 79
    [1] => 49
    [2] => 133
)
array before deleting:
Array
(
    [0] => 79
    [1] => 49
    [2] => 133
)
Run Code Online (Sandbox Code Playgroud)

为什么数组$x在未设置时不会被删除?

php unset

2
推荐指数
1
解决办法
8955
查看次数

如何取消多维数组中的最后一项?

我有一个像下面的数组

Array
(
    [0] => Array
        (
            [0] => Date
            [1] => Name
            [2] => Hours
        )
    [1] => Array
        (
            [0] => 2013-01-02
            [1] => Test User
            [2] => 7:59
        )
    [2] => Array
        (
            [0] => 2013-01-03
            [1] => Test User
            [2] => 7:53
        )
    [3] => Array
        (
            [0] => 2013-01-04
            [1] => Test User
            [2] => 8:12
        )
    .
    .
    .
    .
    [16] => Array
    (
        [0] => 
        [1] => Total
        [2] => 103:1
    )
    [17] …
Run Code Online (Sandbox Code Playgroud)

php multidimensional-array unset

2
推荐指数
1
解决办法
4053
查看次数

PHP Magic Method __unset()不能用于调用unset函数

我不明白为什么__unset()不工作.

class myclass {
    public $name = array();

    public function __set($arraykey, $value){
        $this->name[$arraykey] = $value;
    }

    public function __isset($argu){
        return isset($this->name[$argu]);
    }

    public function __unset($argu){ 
        echo "Working: Unset $this->name[$argu]";
        unset($this->name[$argu]);
    }
}

$obj = new myclass;
$obj->name = 'Arfan Haider';

var_dump(isset($obj->name));

unset($obj->name);
Run Code Online (Sandbox Code Playgroud)

我读到只要unset()调用该函数,就会__unset()自动调用Magic Method 并取消设置变量.

在上面的代码我使用unset但它没有调用__unset().为什么?我在理解魔术方法时遗漏了什么__unset()

php magic-methods unset

2
推荐指数
1
解决办法
2407
查看次数

如何在 PHP 中取消设置会话数组

我创建了一个会话数组使用

$_SESSION['create'] = array();
Run Code Online (Sandbox Code Playgroud)

然后使用这个填充数组,

$_SESSION['create']['new-campaign-name']    = $_POST['new-campaign-name'];
$_SESSION['create']['new-campaign-type']    = $_POST['new-campaign-type'];
$_SESSION['create']['new-campaign-country'] = $_POST['new-campaign-country'];
$_SESSION['create']['new-campaign-list']    = $_POST['new-campaign-contact'];
$_SESSION['create']['new-campaign-des']     = $_POST['new-campaign-des'];
Run Code Online (Sandbox Code Playgroud)

但我想删除会话数组的所有内容。

我试过这个

unset($_SESSION['create']);
Run Code Online (Sandbox Code Playgroud)

但它似乎不起作用并且所有值仍在会话数据上,有没有办法重置会话数组的内容?

php arrays session unset

2
推荐指数
1
解决办法
7524
查看次数

在UnsetValue中转换一个值时,使用convertback进行多重绑定不起作用

我有以下Multibinding:

 <Grid.Visibility>
    <MultiBinding Converter="{StaticResource MyMultiValueConverter}" Mode="TwoWay">
      <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="MyVisibilityDependencyProperty" Mode="TwoWay"/>
      <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="MyBoolProperty" Mode="TwoWay"/>
   </MultiBinding>
</Grid.Visibility>
Run Code Online (Sandbox Code Playgroud)

MyVisibilityDependencyProperty是依赖项属性.MyBoolProperty是一个普通的属性.MyMultiValueConverter的实现是重要的:

public class MyMultiValueConverter: IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
       //Not interesting
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        return new[] { value, Binding.DoNothing};
    }
}
Run Code Online (Sandbox Code Playgroud)

现在的情景:我做的很好.触发ConvertBack-Method的调用,这意味着我在那里遇到了一个断点.之后我在MyVisibilityDependencyProperty的OnPropertyChangedCallback中找到了一个断点.在那里我可以看到MyVisibilityDependencyProperty的新值是ConvertBack-Method中设置的值.

现在这个问题我不明白.我将ConvertBack-Method的实现更改为:

public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        return new[] { value, DependencyProperty.UnsetValue};
    }
Run Code Online (Sandbox Code Playgroud)

现在我遵循完全相同的方案.我做的很好.触发ConvertBack-Method的调用,这意味着我在那里遇到了一个断点.之后没有任何反应.未调用OnPropertyChangedCallback,并且不更新MyVisibilityDependencyProperty.为什么?

看起来如果数组中的一个值是DependencyProperty.UnsetValue,则停止所有值的传播.不仅是该值,还包括数组中的所有值.这受以下行为支持:

return new[] { …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding unset

2
推荐指数
1
解决办法
4582
查看次数

为什么我需要在 foreach 循环后取消设置 $value

我在 PHP 中使用数组,我对 unset() 函数感到困惑,这是代码:

<?php

$array = array(1, 2, 3, 4);
foreach ($array as $value) {
    $value + 10;
}
unset($value);
print_r($array);

?>
Run Code Online (Sandbox Code Playgroud)

是否有必要取消设置($value),当 $value 在 foreach 循环后仍然存在时,这是一种好习惯吗?

php arrays foreach unset

2
推荐指数
2
解决办法
2375
查看次数

取消设置操作后将 PHP 数组索引重置为从 0 开始

我有一个数组

$cars = array("Volvo", "BMW", "Toyota", "Mercedes");
Run Code Online (Sandbox Code Playgroud)

我想删除第一个元素“沃尔沃”,我用这个

unset($cars[0]);
Run Code Online (Sandbox Code Playgroud)

现在我有一个这样的数组:

Array
(   
    [1] Bmw
    [2] Toyota
    [3] Mercedes
)
Run Code Online (Sandbox Code Playgroud)

但我想我的数组再次从零开始,就像这样:

Array
(
    [0] Bmw
    [1] Toyota
    [2] Mercedes
)
Run Code Online (Sandbox Code Playgroud)

怎么做?

php arrays unset

2
推荐指数
1
解决办法
1796
查看次数