Я думаю, вы должны использовать свой массив как своего рода "карту". Номер предмета - ваш ключ, а количество - ваша стоимость.
Позвонив
$items = array(4,2);
вы создаете
$items[0] = 4;
$items[1] = 2;
но вы хотите использовать 4 и 2 в качестве ключа в вашем массиве. Так что вместо этого вы должны использовать
$items = array( 4 => false, 2 => false );
где false означает элемент, с которым еще не связано количество (также может быть, например, -1).
Это создает
$items[2] = false;
$items[4] = false;
При использовании false вы можете проверить наличие неназначенных значений, вызвав
if ($items[4] === false) {
echo "No quantity set!";
}
А теперь второй шаг ... если вы хотите присвоить элементу № 4 количество 23, просто позвоните
$items[4] = 23;
Так что я не думаю, что вы захотите положиться на порядок внутри вашего массива ..