php 将计数器附加到平面关联数组中特定键的末尾

kognpnkq  于 2023-04-19  发布在  PHP
关注(0)|答案(3)|浏览(72)

我有一个数组,其中有4个元素具有相同的键名,例如:

{
 "Word" : "ok",
 "key_example" : "32",
 "key_example" : "23",
 "key_example" : "21",
 "key_example" : "67"
}

有没有什么简单的方法可以让我用PHP循环这个函数,并将键名改为:

{
 "Word" : "ok",
 "key_example_1" : "32",
 "key_example_2" : "23",
 "key_example_3" : "21",
 "key_example_4" : "67"
}
ajsxfq5m

ajsxfq5m1#

$string = '[{ "unicode" : "1f910" }, { "unicode" : "1f5e3" }, { "unicode" : "1f4a9" }]';
$array = json_decode($string);
$count = 1;
$final = array();
foreach ($array as $item) {
    $final['unicode_'.$count] = $item->unicode;
    $count++;
}
print_r($final); die;

如果你想要JSON

$final = json_encode($final);
khbbv19g

khbbv19g2#

你不能做你想做的,因为你只会用每个重复的键替换当前数组项的值。但是你试图实现的是下面代码的内联。你的键必须是唯一的。这是你从数组中获取数据的方式。它们是你的唯一标识符。
下面是一个数组:

array(
  "a" => "82",
  "b" => "32",
  "c" => "23",
  "d" => "21",
  "e" => "67"
);

你需要取消数组项的设置,然后你可以在数组中用新的键设置它。(注意!这是非常低效的。你应该直接按照你想要的方式构建你的数组,而不使用复制键。)
下面是如何在数组中的每个键上追加:

$i = 1;
foreach ($array as $key => $value) {
  unset($array[$key]);
  $array[$key . "_" . $i] = $value;
  $i++;
}

print_r($array);

输出:

array(
    [a_1] => 82
    [b_2] => 32
    [c_3] => 23
    [d_4] => 21
    [e_5] => 67
);
imzjd6km

imzjd6km3#

你可以试试这个:

$newArray = array();
$index = 1;
foreach ($array as $key => $value) {
    if (array_key_exists($key, $array) {
        $newArray[$key . "_" . $i++] = $value;
    }
}

相关问题