我有许多API响应服务
[
'brand_name' => Adidas,
'item_count' => 24
]
和
[
'brand_name' => Nike,
'count_item' => 254
]
和
[
'name' => Reebok,
'count_all' => 342
]
如何将其转换为1个标准?请尽快
['brand' => $value, 'cnt' = $count]
答案 0 :(得分:1)
如果它们的顺序相同,只需将您的键与值组合:
$array = array_combine(['brand', 'cnt'], array_values($array));
如果没有,只需匹配并替换:
$array = array_combine(
preg_replace(['/.*name.*/', '/.*count.*/'], ['brand', 'cnt'], array_keys($array)),
$array);
如果可能是brand
,name
或brand_name
等,请使用OR |
:
/.*(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);
其中一个应该让你走上正确的道路。
答案 1 :(得分:0)
要将许多数组转换为上述标准,您需要考虑可应用于所有数组的通用条件。在你的情况下,我可以看到所有数组都有2个键,第一个键包含一个单词" name"所以我可以用它作为"品牌"的标准。然后有第二个键包含一个单词" count"用作" cnt"的标准。
$new_array = [];
foreach($array as $item) {
$brand = '';
$cnt = '';
foreach($item as $key => $value) {
if(strpos($key, 'name') !== false) {
$brand = $value;
}
elseif(strpos($key, 'count') !== false) {
$cnt = $value;
}
// more conditions
}
$new_array[] = ['brand' => $brand, 'cnt' => $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;
}