2017-01-27 6 views
1

У меня есть сценарий, который получает номер телефона и сумму. Это показано ниже. Затем вы json кодируете данные из массива.Как передать несколько значений в массиве?

$phoneNumber = "+234424321"; 

$amount = "120.00"; 

$recipients = array(
    array("phoneNumber"=>"$phoneNumber", "amount"=>"$amount") 
); 
$recipientStringFormat = json_encode($recipients); 

Это работает для одного номера телефона и одной суммы. Я хотел бы масштабировать его таким образом, чтобы, если кто-либо закачивает, скажет файл csv с двумя номерами телефонов и количеством номеров, они могут заполнить номер телефона и сумму, и все они преобразуются в массив и кодировку json.

Может ли кто-нибудь помочь сделать это на PHP? Спасибо.

+0

отметить, что PHP массивы не позволяют дубликаты ключей , Поэтому вы можете показать, как следует искать ожидаемый массив? – RomanPerekhrest

+0

'$ recipients = array ( array (" phoneNumber "=>" + 599595 "," amount "=>" 10.00 ") array (" phoneNumber "=>" + 51553678 "," amount "=>" 10.00 ") ); 'Поэтому они ожидают, что данные будут переданы таким образом. – user6721269

+0

Итак, как я могу масштабировать его так, что если кто-то загрузит файл, скажем, файл csv, он заполняет его хорошо, и это передается по мере необходимости. @RomanPerekhrest любезно совет – user6721269

ответ

1

Давайте предположим, что у нас есть файл recipients.csv со следующим содержимым:

+234424321,120.00 
+334424321,130.00 
+444424321,1440.00 
+554424321,155.50 

Чтобы получить многомерный массив с необходимой деталью использовать следующий подход.
Используемые функции: array_map, str_getcsv, array_combine и file:

$data = array_map(function($line){ 
    return array_combine(['phoneNumber', 'amount'], str_getcsv($line)); 
}, file("new_products.csv")); 

print_r($data); 

Выходной сигнал (для указанных выше содержание):

Array 
(
    [0] => Array 
     (
      [phoneNumber] => +234424321 
      [amount] => 120.00 
     ) 

    [1] => Array 
     (
      [phoneNumber] => +334424321 
      [amount] => 130.00 
     ) 

    [2] => Array 
     (
      [phoneNumber] => +444424321 
      [amount] => 1440.00 
     ) 

    [3] => Array 
     (
      [phoneNumber] => +554424321 
      [amount] => 155.50 
     ) 

) 

http://php.net/manual/en/function.str-getcsv.php

0

Как вы используете массив массивов, это может выглядеть так:

$recipients = array(
    array("phoneNumber"=>"$phoneNumber1", "amount"=>"$amount1"), 
    array("phoneNumber"=>"$phoneNumber2", "amount"=>"$amount2") 
); 

или таким образом

$recipients = array(); 
$recipients[] = array("phoneNumber"=>"$phoneNumber1", "amount"=>"$amount1"); 
$recipients[] = array("phoneNumber"=>"$phoneNumber2", "amount"=>"$amount2"); 

Пожалуйста, добавьте некоторую логику этих операций с массивами (например, петли и т.д.) в отношении к вашим потребностям.

+0

Привет, как я могу добавить цикл? По сути, я бы хотел, чтобы кто-то загрузил файл с 1000 строк с двумя столбцами, один номер телефона и количество его циклов затем заполняет этот путь. ----> '$ recipients = array (array (" phoneNumber "=>" + 599595 "," amount "=>" 10.00 ") array (" phoneNumber "=>" + 51553678 "," amount "=>" 10.00 "));' Это необходимый формат. Просьба советом – user6721269

+0

Пожалуйста, прочитайте, как разбирать файлы CSV.Вы должны читать эти файлы по строкам, используя любой цикл, например 'for' или' while'. –

0

Попробуйте это:

$recipients = array(); 
$phone_number = "+234424321"; 
$amount = "120.00"; 

for($i=0; $i<2; $i++){ 
    $recipients[$i]["phone_number"] = "+" . $phone_number + $i; 
    $recipients[$i]["amount"]  = $amount + $i; 
} 

print_r($recipients); 


Выходной сигнал будет получаться:

Array ( 
    [0] => Array ([phone_number] => +234424321 [amount] => 120) 
    [1] => Array ([phone_number] => +234424322 [amount] => 121) 
) 


Обратите внимание, что петля for выше только для справки. Существует множество примеров (например, this) о том, как читать CSV-файл в PHP. Вы можете прочитать этот файл итеративно, до EOF, и сохраните переменные в массиве, как предлагается здесь.

Смежные вопросы