Php 如何正确使用数组\u键\u
为什么$array中的$KEY仍然被推送到$arrayPhp 如何正确使用数组\u键\u,php,arrays,array-push,array-key-exists,Php,Arrays,Array Push,Array Key Exists,为什么$array中的$KEY仍然被推送到$array 我正在努力防止重复键被推入$array中。因为$array是二维数组,$array2是1D数组,请使用下面的代码 $array = json_decode('[{"1234567":1368356071},{"7654321":1368356071}, etc, etc]'); $array2 = array(array(1234567 => time()), array(7654321 => time())); fore
我正在努力防止重复键被推入$array中。因为
$array
是二维数组,$array2
是1D数组,请使用下面的代码
$array = json_decode('[{"1234567":1368356071},{"7654321":1368356071}, etc, etc]');
$array2 = array(array(1234567 => time()), array(7654321 => time()));
foreach($array2 as $key){
if(!array_key_exists(key($key),$array))
array_push($array, $key);
}
因为
$array
是二维数组,而$array2
是1D数组,所以使用下面的代码
$array = json_decode('[{"1234567":1368356071},{"7654321":1368356071}, etc, etc]');
$array2 = array(array(1234567 => time()), array(7654321 => time()));
foreach($array2 as $key){
if(!array_key_exists(key($key),$array))
array_push($array, $key);
}
试试这个
你有三个问题
1) 您正在将数组解码为stdObject,它应该设置为true以将其返回到数组
2) 您需要将数组作为foreach循环($array2作为$key=>$val)
3) 在array\u key\u exists函数中作为$array[0]传递
1
2
试试这个
你有三个问题
1) 您正在将数组解码为stdObject,它应该设置为true以将其返回到数组
2) 您需要将数组作为foreach循环($array2作为$key=>$val)
3) 在array\u key\u exists函数中作为$array[0]传递
1
2
关键字
isset
比函数array\u key\u存在的速度更快
如果不必从NULL中分辨未定义的,则应使用
isset
数组\密钥\存在:
$array = json_decode('[{"1234567":1368356071}]', true);
$array2 = array(1234567 => time(), 7654321 => time());
//echo count($array);
foreach($array2 as $key => $val){
if(!array_key_exists($key,$array[0]))
array_push($array, $key);
}
echo count($array);
isset:
array_key_exists($key,$array);
在Ideone上测试:为了防止重复键被推入$array,它使用以下代码:
isset($array[$key]);
关键字
isset
比函数array\u key\u存在的速度更快
如果不必从NULL中分辨未定义的,则应使用
isset
数组\密钥\存在:
$array = json_decode('[{"1234567":1368356071}]', true);
$array2 = array(1234567 => time(), 7654321 => time());
//echo count($array);
foreach($array2 as $key => $val){
if(!array_key_exists($key,$array[0]))
array_push($array, $key);
}
echo count($array);
isset:
array_key_exists($key,$array);
在Ideone上测试:为了防止重复键被推入$array,它使用以下代码:
isset($array[$key]);
代码foreach中的错误($array2作为$key){replace foreach($array2作为$key=>$val){代码foreach中的错误($array2作为$key){replace foreach($array2作为$key=>$val){@YogeshSuthar array2 1D是怎么回事,不是和array一样但有两个键吗?@GameDevGuru是的array2有两个键,但有一个一维数组。@YogeshSuthar哦,好的,我明白了。我的代码出错了。array2也是2D@YogeshSuthar这很有效,但不是很好。如果我在数组1中有多个值呢?[{“1234567”:1368356071},{“7654321”:1368356071}]$array[0]只搜索第一个。@YogeshSuthar我正在努力防止重复的键被推入$array。@YogeshSuthar array2 1D是什么,它与array2 1D不是一样,但有两个键吗?@GameDevGuru是的array2有两个键,但有一个一维数组。@YogeshSuthar哦,好的,我明白了。我的代码出错了。array2也是2D@YogeshSuthar这很有效,但不是很好。如果我在数组1中有多个值怎么办?[{“1234567”:1368356071},{“7654321”:1368356071}]$array[0]只搜索第一个。@yogeshuthar我正在努力防止重复的键被推到$array中。..foreach($array2 as$key=>$val){似乎在推动索引而不是键。我正试图防止重复的键被推入$array..foreach($array2 as$key=>$val){似乎是在推索引而不是键。我正试图防止重复键被推到$array中。这难道不是只检查是否设置了索引吗?我需要在推之前搜索数组以查看是否已经存在键。我正试图防止重复键被推到$array中。不用说,你知道在其他答案的代码中,uld只需将array_key_exists替换为isset,并且您不需要使用array_push。array_push仅在一次推送多个项目时才需要。这不是仅检查是否设置了索引吗?在推送之前,我需要搜索数组以查看是否已经存在一个键。我正在尝试防止重复的键被获取推入$array..不用说,您只需将array_key_exists替换为isset,在其他答案的代码中..并且您不需要使用array_push。仅当您同时推入多个项目时,才需要array_push。