可能重复:
重新索引数字数组键
我有一个数组如下
Array
(
[0] => 15/11/2012 - 18/11/2012
[1] => 15/11/2012 - 18/11/2012
[2] => 15/11/2012 - 18/11/2012
[3] => 15/11/2012 - 18/11/2012
[4] => 19/12/2012 - 24/12/2012
[5] => 24/12/2012 - 01/01/2013
[6] => 24/12/2012 - 01/01/2013
[7] => 16/01/2013 - 01/02/2013
)
Run Code Online (Sandbox Code Playgroud)
我正在使用array_unique来删除给我的重复项
Array
(
[0] => 15/11/2012 - 18/11/2012
[4] => 19/12/2012 - 24/12/2012
[5] => 24/12/2012 - 01/01/2013
[7] => 16/01/2013 - 01/02/2013
)
Run Code Online (Sandbox Code Playgroud)
如何更改密钥以使其连续 - 如下所示
Array
(
[0] => 15/11/2012 - 18/11/2012 …Run Code Online (Sandbox Code Playgroud) 如果我有一个有符号整数数组,例如:
Array
(
[0] => -3
[1] => 1
[2] => 2
[3] => 3
[4] => 3
)
Run Code Online (Sandbox Code Playgroud)
为了获得独特的价值,我本能地使用,array_unique但经过考虑后,我可以执行array_flip两次具有相同效果,我认为会更快?
array_unique O(n log n),因为它使用的排序操作
array_flip 上)
我的假设是否正确?
更新/示例:
$intArray1 = array(-4,1,2,3);
print_r($intArray1);
$intArray1 = array_flip($intArray1);
print_r($intArray1);
$intArray1 = array_flip($intArray1);
print_r($intArray1);
Array
(
[0] => -3
[1] => 1
[2] => 2
[3] => 3
[4] => 3
)
Array
(
[-3] => 0
[1] => 1
[2] => 2
[3] => 4
)
Array
(
[0] …Run Code Online (Sandbox Code Playgroud) 我使用下面的代码行循环遍历数据库中的表:
$items_thread = $connection -> fetch_all($sql);
Run Code Online (Sandbox Code Playgroud)
如果我打印出阵列:
print_r($items_thread);
Run Code Online (Sandbox Code Playgroud)
我会得到这个:
Array
(
[0] => Array
(
[RecipientID] => 3
[RecipientScreenname] => Tom L
[RecipientFirstname] => Thomas
[RecipientEmail] => info@xx.com
)
[1] => Array
(
[RecipientID] => 3
[RecipientScreenname] => Tom L
[RecipientFirstname] => Thomas
[RecipientEmail] => info@xx.com
)
[2] => Array
(
[RecipientID] => 1
[RecipientScreenname] => Lau T
[RecipientFirstname] => TK
[RecipientEmail] => lau@xx.co.uk
)
)
Run Code Online (Sandbox Code Playgroud)
但我想摆脱数组中的重复项,所以我使用 array_unique
print_r(array_unique($items_thread));
Run Code Online (Sandbox Code Playgroud)
我得到了下面的奇怪结果,这不是我想要的:
Array
(
[0] => Array
(
[RecipientID] => 3
[RecipientScreenname] …Run Code Online (Sandbox Code Playgroud) 我有一个阵列
Array(
[0] => Array
(
[0] => 33
[user_id] => 33
[1] => 3
[frame_id] => 3
)
[1] => Array
(
[0] => 33
[user_id] => 33
[1] => 3
[frame_id] => 3
)
[2] => Array
(
[0] => 33
[user_id] => 33
[1] => 8
[frame_id] => 8
)
[3] => Array
(
[0] => 33
[user_id] => 33
[1] => 3
[frame_id] => 3
)
[4] => Array
(
[0] => 33
[user_id] => 33 …Run Code Online (Sandbox Code Playgroud) 我需要一个类似于array_unique数组内部数组的函数.
案例 - 应该相等,但输出"不相等":
<?php
$arr=array(array('a',1),array('a',2));
$arr2=array_unique($arr);
if($arr2==$arr){
echo "equal";
}
else{
echo "not equal";
}
?>
Run Code Online (Sandbox Code Playgroud)
如何更改代码以使输出"相等"?
我有以下变量$ rows:
阵列(
Run Code Online (Sandbox Code Playgroud)[0] => stdClass Object ( [product_sku] => PCH20 ) [1] => stdClass Object ( [product_sku] => PCH20 ) [2] => stdClass Object ( [product_sku] => PCH19 ) [3] => stdClass Object ( [product_sku] => PCH19 ))
我需要创建仅包含唯一值的第二个数组$ second:
阵列(
Run Code Online (Sandbox Code Playgroud)[0] => stdClass Object ( [product_sku] => PCH20 ) [1] => stdClass Object ( [product_sku] => PCH19 ))
但是当我在$ rows上运行array_unique时,我会收到:
可捕获的致命错误:类stdClass的对象无法在第191行转换为字符串
不确定这是否可行,但我试图在我拥有的项目集合上运行array_unique,以删除重复项.虽然我不能让它工作.
我的控制器逻辑:
// init models
$jobs = Job::search();
$countries = $jobs->get()->map(function( $job ) {
return $job->country;
});
$countries = array_unique( $countries->toArray() );
Run Code Online (Sandbox Code Playgroud)
虽然这会得到"数组到字符串转换"错误
我怀疑使用什么:
foreach(){
// .....
if(!in_array($view, $this->_views[$condition]))
array_push($this->_views[$condition], $view);
// ....
}
Run Code Online (Sandbox Code Playgroud)
要么
foreach(){
// .....
array_push($this->_views[$condition], $view);
// ....
}
$this->_views[$condition] = array_unique($this->_views[$condition]);
Run Code Online (Sandbox Code Playgroud)
UPDATE
目标是获得一系列独特的价值观.这可以通过每次检查值是否已存在in_array或每次添加所有值或最终使用时来完成array_unique.那么这两种方式之间有什么重大区别吗?
这是我之前的一个问题:array_unique vs array_flip - 这表明它array_flip(array_flip())比array_unique()处理简单的字符串和整数要快得多.
我想知道的是为什么要array_unique()创建数组的副本,对其进行排序然后删除重复项
这两种功能的来源都可以在这里找到.
提前致谢!
在PHP中是否有一个数组函数以某种方式执行array_merge,比较值,忽略键?我认为这array_unique(array_merge($a, $b))有效,但我相信必须有一个更好的方法来做到这一点.
例如.
$a = array(0 => 0, 1 => 1, 2 => 2);
$b = array(0 => 2, 1 => 3, 2 => 4);
Run Code Online (Sandbox Code Playgroud)
导致:
$ab = array(0 => 0, 1 => 1, 2 => 2, 3 => 3, 4 => 4);
Run Code Online (Sandbox Code Playgroud)
请注意,我不关心键$ab,但是如果它们是从0开始提升它们会很好count($ab)-1.
array-unique ×10
php ×10
arrays ×5
array-flip ×1
array-merge ×1
big-o ×1
duplicates ×1
eloquent ×1
laravel ×1
laravel-4 ×1
sorting ×1