向具有新值的PHP数组中添加额外的一行


Adding an extra row to a PHP array with new values

我有一个名为$items的数组。我的CMS用三种产品创建了这个阵列,我刚刚做了一个var_dump,结果如下。

array(3) { [0]=> array(11) { ["item_id"]=> string(4) "1320" ["name"]=> string(5) "ITEM_A" ["price"]=> string(6) "$5.00" } 
           [1]=> array(11) { ["item_id"]=> string(4) "1321" ["name"]=> string(5) "ITEM_B" ["price"]=> string(6) "$5.00" } 
           [2]=> array(11) { ["item_id"]=> string(4) "1323" ["name"]=> string(5) "ITEM_D" ["price"]=> string(6) "$5.00" } 
         }

有没有一种方法可以将另一个项目"item_C"注入到这个数组中,这样它现在就是

array(3) { [0]=> array(11) { ["item_id"]=> string(4) "1320" ["name"]=> string(5) "ITEM_A" ["price"]=> string(6) "$5.00" } 
           [1]=> array(11) { ["item_id"]=> string(4) "1321" ["name"]=> string(5) "ITEM_B" ["price"]=> string(6) "$5.00" } 
           [2]=> array(11) { ["item_id"]=> string(4) "1323" ["name"]=> string(5) "ITEM_D" ["price"]=> string(6) "$5.00" } 
           [3]=> array(11) { ["item_id"]=> string(4) "1322" ["name"]=> string(5) "ITEM_C" ["price"]=> string(6) "$5.00" } 
         }

然后按"名称"排序?我基本上想总是向这个数组添加一个新行,它总是有不同的名称,然后按名称排序。当我执行foreach php命令时,我不希望它按照ITEM_A、ITEM_B、ITEM_D、ITEM_C的顺序。它需要是ITEM_A、ITEM_B、ITEM_C、ITEM_D。

在PHP中添加数组很容易,就像$array[]:一样

 $myArray = array(1,2,3);
 $myArray[] = 4; //now array(1,2,3,4)

因此,要添加到现有阵列中,请首先创建新的阵列元素

$element = array("item_id" => 1322, "name" => "ITEM_C", /*etc.*/);

然后将其添加到您的阵列

$myArray[] = $element;

至于排序,根据您的确切需求,有各种排序功能。由于您是根据给定的数组键进行排序的,因此可能需要使用给定的函数调用usort

function nameCompare($a, $b)
{
    $a = $a["name"];
    $b = $b["name"];
    return strcmp($a, $b);
}
usort($myArray, 'nameCompare');