сумма массива — php array_sum, возвращающий только первое значение

Я довольно новичок в php, но мне кажется, что я пропускаю что-то совершенно простое?

У меня есть некоторые значения в столбце базы данных, которые разделены запятыми, например, так:
1,2,3

Когда я пытаюсь получить сумму значений, я ожидаю, что эхо-массив array_sum будет равен 6, но я получу только первое значение, т.е. «1»

echo $amount; //Gives 1,2,3 etc.

$amount_array = array($amount);
echo array_sum($amount_array); //Only prints "1"
print_r($amount); // shows 1,2,3
print_r($amount_array); // shows Array ( [0] => 1,2,3 )

0

Решение

Это строка, а не массив, вы должны разделить ее, используя взрываться функция:

$exploded =  explode ( "," , $amount_array);
var_dump($exploded);
3

Другие решения

Чтобы использовать array_sum строка должна быть преобразована в массив

Вам нужно использовать взрываться функция:

$amount_array = explode(',', $amount);

Таким образом, ваш общий код должен быть таким:

$amount_array = explode(',', $amount);
echo array_sum($amount_array);
2

array_sum() работает, складывая значения в массиве. У вас есть только одна пара ключ => значение в вашем массиве: ключ 0 со значением 1,2,3,

Если у вас есть список, разделенный запятыми, и вы хотите, чтобы это был массив, я бы использовал explode() функция, чтобы превратить список в правильные пары ключ => значение, которые array_sum() будет ожидать.

Пытаться

$amount_array = explode(',',$amount);
2

Вы не можете инициализировать массив так, как вы собираетесь. Вы передаете строку через запятую, которая является просто одним аргументом. PHP не преобразует эту строку автоматически в отдельные аргументы для вас.

Чтобы преобразовать разделенную запятыми строку в массив отдельных значений, вы можете разбить строку с помощью функции, подобной explode(), который принимает в качестве аргументов разделитель и строку и возвращает массив значений, разделенных разделителем.

$amount_array = explode( ',', $amount ); // now $amount_array is the array you intended
1
По вопросам рекламы [email protected]