在阵列更改索引的顺序(PHP)

那种一直停留在这一个,现在一段时间,所以任何帮助,将不胜感激。 我有一个阵列(左),其中包含的元素列表,所述目标是另一阵列(右)与来自左侧的阵列值的键进行排序。

左阵

Array ( [0] => ID [1] => FirstName [2] => LastName [3] => Address )

在右边的数组

Array ( [0] => Array ( [FirstName] => Pim [Address] => Finland [LastName] => Svensson [ID] => 3 ) [1] => Array ( [FirstName] => Emil [Address] => Sweden [LastName] => Malm [ID] => 5 ) )

我试图完成将与此类似

Array ( [0] => Array ( [ID] => 3 [FirstName] => Pim [LastName] => Svensson [Address] => Finland )

有人吗? :)呵呵,我运行PHP 5.3,如果它可以帮助!

--------------解决方案-------------

$output = array();
foreach ( $right as $array ) {
foreach ( $left as $field ) {
$temp[$field] = $array[$field];
}
$output[] = $temp;
}

您可以使用uksort()它可以让你通过用户定义的函数数组键排序。 例如:

function sort_by_array($array) {
// create a sorting function based on the order of the elements in the array
$sorter = function($a, $b) use ($array) {
// if key is not found in array that specifies the order, it is always smaller
if(!isset($array[$a])) return -1;
if($array[$a] > $array[$b]) {
return 1;
}
return ($array[$a] == $array[$b]) ? 0 : -1;
};
return $sorter;
}
// $array contains the records to sort
// $sort_array is the array that specifies the order
foreach($array as &$record) {
uksort($record, sort_by_array(array_flip($sort_array)));
}

我利用的可能性在5.3动态定义功能,我用array_flip()来转换:

Array
(
[0] => ID
[1] => FirstName
[2] => LastName
[3] => Address
)

Array
(
[ID] => 0
[FirstName] => 1
[LastName] => 2
[Address] => 3
)

这可以更容易地购买比较的键。

你必须爆炸阵列存储阵列中这样的变量

$array = Array
(
[0] => Array
(
[ID] => 3
[FirstName] => Pim
[LastName] => Svensson
[Address] => Finland
);

而爆炸后阵,然后爆炸的数组,你会得到数组的参数分开,那么你可以使用破灭功能安排他们在anyorder如你所愿

我会退后一步,看看你真正需要做的。 该数组是关联的,这样你就可以即时访问正确的元素,对不对? 所以你并不真的需要它是为了,除非你打印输出foreach

我建议以下解决方案之一:

  1. 如果你需要“正确的”数组是在关键的顺序,再看看数据库查询/相似,选择你需要他们的顺序列。
  2. 要打印,查找的顺序,在“左”的阵列,然后在“正确的”数组打印按键的对应值的foreach人。

好了,你的问题很常见,通常是关联数组用于解决有关“位置”的任何问题。 总之,有很多方式做你正在寻找的东西你要买什么的。

您可以使用列表(),但它是一个基于位置:

foreach($oldArray as $o)
{
list($firstName,$lastName,$address,$id)=$oldArray;
$newArray[]=array($id,$firstName,$lastName,$address);
}

但解决问题的最佳方式是直接在正确的顺序,而不是经过重新梳理填充阵列:)

分类:php 时间:2015-03-15 人气:0
本文关键词: PHP,数组排序
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.449 (s). 10 q(s)