将php数组从5个变量简化为2个变量

时间:2017-05-10 01:25:48

标签: php arrays multidimensional-array

我有一个数组$ 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'];
            }

4 个答案:

答案 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);