【问题标题】:Changing the keys of an array更改数组的键
【发布时间】:2013-03-30 00:14:39
【问题描述】:

说我有这些:

$services = array();
$services["services0"];
$services["services1"];
$services["services2"];
$services["services3"];

我想创建某种循环来将这些更改为:

$services[0];
$services[1];
$services[2];
$services[3];

你会怎么做呢?不知道数组中有多少个 key : value 对?

【问题讨论】:

  • 是的,有两种不错的方法...使用forforeach 循环。
  • 我理解这两个概念......但我在想,也许我首先得到数组中元素的数量,然后创建从零开始的 for 循环,直到数组的长度。在该循环内创建一个 foreach 循环,该循环进入每个 $key 并将其替换为当前迭代...
  • 我相信一定有一个更容易解决这个问题的方法!?

标签: php arrays multidimensional-array replace key


【解决方案1】:

试试下面的代码:

$dummy_array = $services;
$services = array();
foreach($dummy_array as $service) {
    $services[] = $service;

}

这里发生的是您正在取消设置服务(但首先保存它)然后您循环浏览保存的版本,将值添加回数组中。 $services[] = $service; 是这里的关键。这会将一个值附加到具有标准键的现有数组的末尾。即 0、1、2、3 等等。这将创建您想要删除字符串键并用标准数组键索引替换它们的结果。试试看,看看你会得到什么。祝你好运

【讨论】:

  • 非常酷,我会记住这一点,我要感谢您的贡献,您的代码简单而整洁,并且符合预期,但是上面的代码是单行的,也是整洁的我以前从未见过的小功能,所以他明白了,但我也喜欢你的功能
  • @hayonj 没问题。我在工作中经常使用 array[] 语法。它对其他类型的问题非常有用,因此它是您的工具包中的一个很好的工具。我不确定为什么其他人拒绝投票有效的解决方案。我猜这是个奇怪的地方……
  • 您的回答与上面的回答一样有效,我希望我能帮助您不要投反对票。我不知道如何继续,但你的代码可以工作,不应该被否决,并且可以用于我需要它之外的许多其他事情
  • 需要 15 声望 :) 我一到那里我就会投票!我现在 10 岁了
  • 除了我喜欢你解释函数的方式,因为大多数人并没有真正深入细节......他们在没有解释太多的情况下粘贴函数......
【解决方案2】:

执行此操作并丢弃原始密钥的最简单方法是通过 array_values() 运行数组:

$new_array = array_values( $old_array);

你可以从this demo看到下面的例子:

$services = array();
$services["services0"] = 's0';
$services["services1"] = 's1';
$services["services2"] = 's2';
$services["services3"] = 's3';

$services = array_values( $services);

print_r( $services);

产生这个数组:

Array
(
    [0] => s0
    [1] => s1
    [2] => s2
    [3] => s3
)

【讨论】:

  • ...除非它实际上没有按键排序,否则您需要ksort
  • 太棒了!感谢这个了不起的班轮,我以前从未听说过 :) 我喜欢 Stackoverflow 并与你们分享......我们每天都在学习新事物!
  • 请注意:它只是看起来像键中的数字(即 0-3)被保留。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 2014-05-22
  • 2017-09-20
  • 2013-12-31
相关资源
最近更新 更多