我有一个数组$ bobby,里面有以下数组。它按ID排序。
1
id="1"
color="blue"
size="7"
height="10"
beebop="z"
2
id="2"
color="red"
size="64"
height="52"
beebop="y"
3
id="3"
color="pink"
size="72"
height="39"
beebop="not_x"
我在创建php函数时遇到问题,该函数将创建一个只包含两个值id和color的简化数组($bobby_simplified
)?所以,新数组看起来像这样:
1
id="1"
color="blue"
2
id="2"
color="red"
3
id="3"
color="pink"
此外,在该功能中,我们可以按颜色升序排序吗?
我试过以下但没有运气:
foreach ($bobby AS $bobby_simplified) {
$id = $bobby_simplified['id'];
$color = $bobby_simplified['color'];
}
答案 0 :(得分:1)
您可以使用array_map()
函数获取新数组,使用array_slice()
获取子数组的前两个元素。查看 live demo 。
$simplified = array_map(function($v){return array_slice($v, 0, 2, true);}, $array);
答案 1 :(得分:1)
您可以使用以下颜色按字母顺序对数组进行排序:
usort($arr, function($a, $b) { return strcmp($a['color'], $b['color']); });
答案 2 :(得分:1)
尝试这样的事情
foreach($ bobby AS $ bobby_simplified){
$ res = array(“id”=> $ bobby_simplified ['id'],“color”=> $ bobby_simplified ['color']);
}
的print_r($ RES);
答案 3 :(得分:-1)
试试这个,已经过测试,按颜色添加分类
$array = [1=>['id'=> '1', 'color'=> 'blue', 'size'=>'7', 'height'=>'10', 'beebop'=>'z'],
2=>['id'=> '2', 'color'=> 'red', 'size'=>'64', 'height'=>'52', 'beebop'=>'y'],
3=>['id'=> '3', 'color'=> 'pink', 'size'=>'72', 'height'=>'39', 'beebop'=>'not_x'],
];
foreach($array as $arr){
$arr = array_splice($arr,0,2);
print_r($arr);
$array2[] = $arr;
}
echo "<br>";
print_r($array2);
echo "<br>";
function sortBy($field, &$array, $direction = 'asc')
{
usort($array, create_function('$a, $b', '
$a = $a["' . $field . '"];
$b = $b["' . $field . '"];
if ($a == $b)
{
return 0;
}
return ($a ' . ($direction == 'desc' ? '>' : '<') .' $b) ? -1 : 1;
'));
return true;
}
sortBy('color', $array2, 'asc');
print_r($array2);