如何提取数组中无索引的键和值

11

我想从一个数组中提取数据(原始数组包含键和值)。提取数组后,我想要两个新数组,第一个只包含键,第二个只包含值,并且两个新数组均不带索引(请参见代码示例)。

// original array 
$array = array(
    "name1"=>500
   ,"name2"=>400
   ,"name3"=>300
   ,"name4"=>200
   ,"name5"=>100
);

// after extraction
$array1 = array('name1','name2','name3','name4','name5');
$array2 = array(500,400,300,200,100);

// not like this
// $array1 = array(0=>'name1',1=>'name2',2=>'name3',3=>'name4',4=>'name5);
// $array2 = array(0=>500,1=>400,2=?300,3=>200,4=>100);

6
PHP 数组中的每个元素 必须 有一个索引。你的“不要这样做”的数组与你想要的数组完全相同。 - Francis Avila
2个回答

17
$array1 = array_keys($array);
$array2 = array_values($array);

你可以在这里阅读有关数组数据结构的文章:这里

在计算机科学中,数组数据结构或简称数组是一种数据结构,由一组元素(值或变量)组成,每个元素由至少一个数组索引或键标识。 数组存储使得可以通过数学公式从其索引元组计算出每个元素的位置。


请注意,这是针对处理HTTP请求和JSON值的人。我成功地通过创建一个数组并逐个添加所需元素来获取一个没有索引的数组。print_r函数仍然显示索引,但当我在HTTP响应中返回创建的数组时,我的前端只得到了值(例如['a','b','c'])。此处有演示。我的问题是array_filter返回了索引(在JSON中类似于{'0': 'a','1': 'b','2': 'c'})。 - Aleksandar
print_r函数是什么意思?如果给定一个数组,它将以一种显示键和元素的格式呈现值。也许你的前端会因为JSON格式而自动识别它为数组。 - Afriyandi Setiawan
虽然我知道print_r可以做到这一点,但我和OP遇到了同样的问题,我通过逐个将值插入数组(在循环中)来解决它。在修复之前,JSON显示为{0:'a',1:'b'},而在使用循环后,它变成了['a','b'] - Aleksandar

10
$keys = array_keys($array);
$values = array_values($array);

请注意,对于PHP来说,array(0=>'item')array('item')是完全相同的。在PHP中不存在没有索引的数组项。如果您没有提供索引,PHP将会自动添加一个数字索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接