可能重复:
您可以在PHP中一次取消设置()许多变量吗?
$var1 = $var2 = $tvar3 = null;
Run Code Online (Sandbox Code Playgroud)
可以删除这样的变量吗?
有没有更好的方法来取消几个变量?
这里的代码(在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寻求帮助!
我正在使用$_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数组元素的合理方法?
请参阅此代码: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在未设置时不会被删除?
我有一个像下面的数组
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) 我不明白为什么__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()?
我创建了一个会话数组使用
$_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)
但它似乎不起作用并且所有值仍在会话数据上,有没有办法重置会话数组的内容?
我有以下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) 我在 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 循环后仍然存在时,这是一种好习惯吗?
我有一个数组
$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)
怎么做?