gpt4 book ai didi

php - 将数组中键的数据类型从数字更改为字符串

转载 作者:行者123 更新时间:2023-12-04 05:40:19 26 4
gpt4 key购买 nike

我有两个带数字键的数组。这是一个小例子:

$test_a = array(1 => 'one', 2 => '二');
$test_b = array(2 => 'two', 4 => 'four');

我想合并它们,用 array_merge() , 接收 $test_c数组:
$test_c = array(
1 => 'one',
2 => 'two',
4 => 'four'
);

array_merge 手册提到:

Values in the input array with numeric keys will be renumbered with incrementing keys starting from zero in the result array.



似乎是真的,因为:
$test_c = array_merge($test_a, $test_b);
var_dump($test_c);

返回:
array (size=4)
0 => string 'one' (length=3)
1 => string '二' (length=3)
2 => string 'two' (length=3)
3 => string 'four' (length=4)

我尝试了什么:
  • 我尝试将键转换为字符串:
    foreach($test_a as $key => $value) $test_a[(string)($key)] = $value;

    ...键仍然是数字。
  • 我试过 strval() :
    foreach($test_a as $key => $value) $test_a[strval($key)] = $value;

    没有变化。键仍然是数字。
  • 我试过这个技巧:
    foreach($test_a as $key => $value) $test_a['' . $key . ''] = $value;

    也不行。键仍然是数字。

  • 令我惊讶的是,当我发现数组键上有类似从字符串到数字的自动转换的功能时。这将键更改为字符串:
    foreach($test_a as $key => $value) $test_a[' ' . $key . ' '] = $value;

    当我添加 trim() :
    foreach($test_a as $key => $value) $test_a[trim(' ' . $key . ' ')] = $value;

    键被转换回数字。

    基本上,我想合并这两个数组。我想唯一的解决方案是找到一种方法将键从数字转换为字符串数据类型。
    如果你能另外解释一下“自动转换”的事情,那我就很满意了。

    最佳答案

    您可以使用 +两个数组上的运算符,如下所示:

    $test_a = array(1 => 'one', 2 => '二');
    $test_b = array(2 => 'two', 4 => 'four');

    var_dump( $test_b + $test_a);

    will output :
    array(3) {
    [2]=>
    string(3) "two"
    [4]=>
    string(4) "four"
    [1]=>
    string(3) "one"
    }

    它不是您要查找的确切顺序,但您可以使用 ksort() 按关键字排序 get the exact output .您所说的“自动转换”实际上称为类型强制,称为 type juggling在 PHP 中。

    关于php - 将数组中键的数据类型从数字更改为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11344807/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com