1

这不是explode可以解决的

我有几个数组

$order
data: {5,3,2}

$title,
data: {USA, England, China}

$attribute
Same idea 

$type
Same idea 

$order 已经存在某个值
{5,3,2} 并且每个都有相应的 $title,$attribute,$type 值

eg. 5 USA  att5 type5

我想将顺序排序为 {2,3,5} 并且其他数组中的相应数据也将被排序。

eg. {2,3,5}

之后为数组 $title

{China, England,USA}

如何为所有数组实现这一点?谢谢

我的想法是使用关联数组,我可以对键进行排序,一切都完成了。但是,我无法生成数组

我的想法数组:

$records = array(5 => array("title" => "USA",   "att" => "add5"),
                 3 => array("title" => "England",  "att" => "add3"),
                 2 => array("title" => "China", "att" => "add2"));
4

5 回答 5

1

事情现在更清楚了,我建议使用array_multisort http://php.net/manual/en/function.array-multisort.php

于 2012-04-14T18:47:49.857 回答
1

在脚本的这些行之后

$string = substr($string, 0, -1);
$records="array (".$string.");";

你可以加

eval("\$records = $records;");

您可以在http://php.net/manual/es/function.eval.php阅读有关 eval 函数的信息,以及为什么在使用它时应该非常小心

于 2012-04-14T18:02:20.070 回答
1

如果一个explode还不够,两个explodes 可以提供帮助;)

$records = Array();
foreach(explode("\n", trim($string)) as $line)
{
   list($order,$title,$attribute,$type) = explode(",", $line);
   $records[$order] = Array("title" => $title, "attribute" => $attribute, "type" => $type);
}
ksort($records);
于 2012-04-14T18:02:57.937 回答
1

而不是从字符串转换为数组,您可以构建它

$result = array();
$countItem=0;
foreach ($order as $itemID)
{
     $result [$countItem] = array('id' => $itemID, 'title' => $title[$countItem],   'attribute' => $att[$countItem],'type'=>$type[$countItem]);
     $countItem++;
}

然后按id排序

于 2012-04-14T18:04:09.907 回答
1
<?php

$order = array(5, 3, 2);    // or $order = array("5", "3", "2");
$title = array("USA", "England", "China");
$att = array("Att 1", "Att 2", "Att 3");
$type = array("Type 1", "Type 2", "Type 3");

$records = array();
foreach ($order as $i => $o) 
    $records[$o] = array("title" => $title[$i], "att" => $att[$i], "type" => $type[$i]);

ksort($records, SORT_NUMERIC);

print_r($records);

?>
于 2012-04-14T18:40:28.183 回答