Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将多个阵列转换为一个标准?_Php - Fatal编程技术网

Php 如何将多个阵列转换为一个标准?

Php 如何将多个阵列转换为一个标准?,php,Php,我有很多api服务的响应 [ 'brand_name' => Adidas, 'item_count' => 24 ] 及 及 如何将其转换为1个标准?噢,拜托 ['brand' => $value, 'cnt' = $count] 要将多个数组转换为上述标准,您需要考虑可以应用于所有数组的通用标准。在您的例子中,我可以看到所有数组都有2个键,第一个键包含一个单词“name”,因此我可以将其用作“brand”的标准。然后,第二个键包含一个单词“count”,

我有很多api服务的响应

[
    'brand_name' => Adidas,
    'item_count' => 24
]

如何将其转换为1个标准?噢,拜托

['brand' => $value, 'cnt' = $count]

要将多个数组转换为上述标准,您需要考虑可以应用于所有数组的通用标准。在您的例子中,我可以看到所有数组都有2个键,第一个键包含一个单词“name”,因此我可以将其用作“brand”的标准。然后,第二个键包含一个单词“count”,用作“cnt”的标准

假设您有另一个数组:

[
    'brand' => 'Danbo', 
    'total' => 200,
]
由于这是一个例外情况,您需要设置另一个条件:

elseif(strpos($key, 'brand') !== false) {
    $brand = $value;
}
elseif(strpos($key, 'total') !== false) {
    $cnt = $value;
}
或附加到现有条件:

if(strpos($key, 'name') !== false || strpos($key, 'brand') !== false) {
    $brand = $value;
}
elseif(strpos($key, 'count') !== false || strpos($key, 'total') !== false) {
    $cnt = $value;
}

如果它们的顺序相同,只需将键与值组合即可:

$array = array_combine(['brand', 'cnt'], array_values($array));
如果没有,只需匹配并更换:

$array = array_combine(
    preg_replace(['/.*name.*/', '/.*count.*/'], ['brand', 'cnt'], array_keys($array)),
    $array);
如果可能是
品牌
名称
品牌_名称
等,则使用或

/.*(name|brand).*/
如果您知道所有可能的组合,那么:

$replace = ['brand_name' => 'brand', 'name' => 'brand',
            'item_count' => 'cnt', 'count_item' => 'cnt', 'count_all' => 'cnt'];

$array = array_combine(str_replace(array_keys($replace), $replace, array_keys($array)),
                       $array);

其中一个应该会让您走上正确的道路。

您的要求不清楚,您也没有向我们展示您尝试过的无效方法。我不知道可能的组合Sok,这是三个选项中的一个。如果没有共同的词,而且它们的顺序不一样,那么这是不可能的。
$array = array_combine(
    preg_replace(['/.*name.*/', '/.*count.*/'], ['brand', 'cnt'], array_keys($array)),
    $array);
/.*(name|brand).*/
$replace = ['brand_name' => 'brand', 'name' => 'brand',
            'item_count' => 'cnt', 'count_item' => 'cnt', 'count_all' => 'cnt'];

$array = array_combine(str_replace(array_keys($replace), $replace, array_keys($array)),
                       $array);