【问题标题】:Getting separate different value in an array在数组中获取单独的不同值
【发布时间】:2019-09-09 08:29:05
【问题描述】:

我有这样的问题,我无法在 array 中获得相同的值,并在 array 中分离不同的值

我已经使用了 for 循环,但我的逻辑似乎不正确。

$supplier_id 的值为

Array ( 
    [0] => 82 
    [1] => 82 
    [2] => 96 
    [3] => 96 
    [4] => 28 
)
for($x = 0; $x < count($supplier_id); $x++){
        for($i = 0; $i < count($supplier_id); $i++){

            if($supplier_id[$x] == $supplier_id[$i]){
                 $same_supp[$x]['same_supp'] = $supplier_id[$x];
            }else{

            }
         }
}

我想将 array 中的值存储为相同的值,并将不同的值分开。

我的预期输出是

$same_supp[0] = array(0 => 82, 1 => 82);
$same_supp[1] = array(0 => 96, 1 => 96);

并将28的不同值分开并存储在不同的变量中。

【问题讨论】:

  • 您能分享一下您的预期输出吗? $supplier_id 中的值是什么类型的?
  • 请分享您的数组$supplier_id,以及您的预期输出。你的问题目前还不清楚。不过,在 for 循环上使用 foreach 循环可能会更好。
  • $supplier_id 的值是数组( [0] => 82 [1] => 82 [2] => 96 [3] => 96 [4] => 28 )。我的预期输出是 $same_supp[0] = Array ( [0] => 82[1] => 82), $same_supp[1] = Array ( [0] => 96[1] => 96) 并将不同的值是 28
  • 问题详情必须编辑到问题中,不能在问题下方评论。
  • 你想忽略/删除28

标签: php arrays codeigniter


【解决方案1】:

对它们进行分组,过滤掉单个匹配项,并删除临时键。

代码:(Demo)

$array = [82, 82, 96, 96, 28];

foreach ($array as $v) {
    $temp[$v][] = $v;
}

foreach ($temp as $a) {
    if (count($a) != 1) {
        $result[] = $a;
    }
}

var_export($result);

输出:

array (
  0 => 
  array (
    0 => 82,
    1 => 82,
  ),
  1 => 
  array (
    0 => 96,
    1 => 96,
  ),
)

【讨论】:

  • 第三个值在哪里?
  • OP 显然不想要它,请参阅问题。
  • 把不同的值分隔在一个数组里面,啊哈
  • @mickmackusa 谢谢兄弟。但是如何将第三个值存储在不同的变量中?
  • 给 if 写一个 else 条件。 else { $singles[] = $a; }
【解决方案2】:

由于内循环 ($i) 也与外循环 ($x) 在同一迭代中运行,因此它不仅会找到重复项,还会找到所有元素。

您可以通过跳过对同一项目的检查来修复它(当 $i 和 $x 相等时)

    for($x = 0; $x < count($supplier_id); $x++){
            for($i = 0; $i < count($supplier_id); $i++){
                 if ($x == $i) continue;
                 ...
                 ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 2021-03-24
    • 2015-04-24
    相关资源
    最近更新 更多