【问题标题】:How do I pass mutiple values in an array?如何在数组中传递多个值?
【发布时间】:2017-06-13 13:39:30
【问题描述】:

我确实有一个脚本可以接收电话号码和金额。这如下所示。然后你对数组中的数据进行 json 编码。

$phoneNumber = "+234424321";

$amount = "120.00";

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

这适用于一个电话号码和一个金额。我想扩大规模,这样如果有人上传说一个包含两列电话号码和金额的 csv 文件,他们可以填充电话号码和金额,并且它们也都转换为数组和 json 编码。

有人愿意在 PHP 中提供帮助吗?谢谢。

【问题讨论】:

  • 请注意,PHP 数组不允许重复键。因此,你能展示一下预期的数组应该是什么样子吗?
  • $recipients = array( array("phoneNumber"=>"+599595", "amount"=>"10.00") array("phoneNumber"=>"+51553678", "amount"=>"10.00") ); 所以他们希望通过这种方式传递细节。
  • 那么我怎样才能扩大它,以便如果有人上传一个文件说一个 csv 文件,它会很好地填充它,并根据需要传递。 @RomanPerekhrest 好心建议

标签: php arrays json object


【解决方案1】:

假设我们有一个文件recipients.csv,其内容如下:

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

要获得具有所需详细信息的多维数组,请使用以下方法。
使用的函数:array_mapstr_getcsvarray_combinefile

$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

【讨论】:

    【解决方案2】:

    当你使用数组数组时,它可以是这样的:

    $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");
    

    请根据您的需要为这些数组操作(如循环等)添加一些逻辑。

    【讨论】:

    • 您好,如何添加循环?本质上,我希望有人上传一个文件,其中包含 1000 行,其中两列一个电话号码和它循环的数量,然后以这种方式填充。 ----> $recipients = array( array("phoneNumber"=>"+599595", "amount"=>"10.00") array("phoneNumber"=>"+51553678", "amount"=>"10.00") ); 这是必需的格式。请指教
    • 请阅读如何解析 CSV 文件。您必须使用forwhile 之类的任何循环逐行读取这些文件。
    【解决方案3】:

    试试这个:

    $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 循环仅供参考。有很多关于如何在 PHP 中读取 CSV 文件的示例(例如 this)。您可以迭代地读取该文件,直到EOF,并按照此处的建议继续将变量存储在数组中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多