首页 > 解决方案 > 获取数组php相同值的索引

问题描述

我有一个像这样的关联数组[这个数组是两个不同数组的组合]:

我结合数组和通过array_combine()函数

$products = array_combine($one_array_key,$second_array_values);

$products = array(
    "arn1" =>"A",
    "arn2" =>"A",
    "arn3" =>"A",
    "arn4" =>"B",
    "arn5" =>"B",
    "arn6" =>"B"
);

A所以正如你所看到的,数组和有两个不同的值B

我想要两个数组由它的键组成。

或者换句话说:比较关联数组的值和匹配值的键将被提取到另一个数组。

所以我的预期是:

 $A = array("arn1","arn2","arn3");
 $B = array("arn4","arn5","arn6");

我的代码:

$products = array_combine($one_array_key,$second_array_values);
$products_distinct_values = array_count_values($product);
$products_distinct_values_keys = array_keys($products_distinct_values);

    foreach ($products as $key => $value)
    {
        // what should I need write there, to get the x numbers of array(s), containing *key* of the same *value of array*
    }

标签: phparrays

解决方案


我绝对不会在专业项目中使用这种“可变变量”技术,但它确实满足您的要求。我会敦促你找出你的 XY 问题中的愚蠢之处。

实际上,下面的代码片段将同步迭代两个相关的输入数组并创建可变名称的结果数组以将值推送到其中。

代码:(演示

$one_array_key = ['A', 'A', 'A', 'B', 'B', 'B'];
$second_array_values = ['arn1', 'arn2', 'arn3', 'arn4', 'arn5', 'arn6'];

foreach ($one_array_key as $index => $value) {
    $$value[] = $second_array_values[$index];
}

var_export($A);
echo "\n---\n";
var_export($B);

输出:

array (
  0 => 'arn1',
  1 => 'arn2',
  2 => 'arn3',
)
---
array (
  0 => 'arn4',
  1 => 'arn5',
  2 => 'arn6',
)

拥有一个包含键和相关子数组的静态命名变量更有意义。这样,您可以根据需要调用array_keys()结果,以找出在原始输入中找到了哪些组。

代码:(演示

$result = [];
foreach ($one_array_key as $index => $value) {
    $result[$value][] = $second_array_values[$index];
}
var_export($result);

输出:

array (
  'A' => 
  array (
    0 => 'arn1',
    1 => 'arn2',
    2 => 'arn3',
  ),
  'B' => 
  array (
    0 => 'arn4',
    1 => 'arn5',
    2 => 'arn6',
  ),
)

推荐阅读