PHP:将数组与另一个从curl中取出的数组相关联

时间:2017-11-16 16:05:48

标签: php arrays curl

我有以下代码从cURL中获取数组。

$codici_hotel_arr = array();                  
foreach($data_destin['results'] as $key=>$val) {        
    $codici_hotel_arr[] = '"' . $val['hotel_code'] . '"'; 
    $codici_price_arr[] = '"' . $val['products'][0]['price'] . '"';  
}
$codici_definitivi = implode(', ', $codici_hotel_arr);
$codici_prezzi = implode(', ', $codici_price_arr);

代码返回以下值:

**$codici_definitivi:**
"1074d0", "19f726", "1072ba", "183444", "1071bf", "112438", "1b326e", "15d8ab", "19d885", "193e61", "10aab2", "107155", "110669", "189b95", "16d78f", "18dd7d"

**$codici_prezzi**
"160.16", "234.32", "256.88", "325.42", "342.22", "353.30", "365.78", "372.84", "395.72", "478.75", "503.36", "543.39", "584.61", "584.61", "597.70", "601.63".

我需要为每个 $ codici_definitivi 获得 $ codici_prezzi 。 作为字符串cURL的响应,两个代码如下:

1074d0 - > 160.16;

19f726 - > 234.32;

1072ba - > 256.88;

等...

有可能吗?

谢谢

3 个答案:

答案 0 :(得分:1)

如果我没有误解你的要求,那么这应该有效。删除额外的内爆并尝试array_combine()两个相应的数组。

  // Your initial code, after removing imploding
  $codici_hotel_arr = $codici_price_arr = [];                  
  foreach($data_destin['results'] as $key=>$val) {        
       $codici_hotel_arr[] = '"' . $val['hotel_code'] . '"'; 
       $codici_price_arr[] = '"' . $val['products'][0]['price'] . '"'; 
  }

 // I assume your array structure will be after looping curl response
 $codici_hotel_arr = ["1074d0", "19f726", "1072ba", "183444", "1071bf", "112438", "1b326e", "15d8ab", "19d885", "193e61", "10aab2", "107155", "110669", "189b95", "16d78f", "18dd7d"];
 $codici_price_arr = ["160.16", "234.32", "256.88", "325.42", "342.22", "353.30", "365.78", "372.84", "395.72", "478.75", "503.36", "543.39", "584.61", "584.61", "597.70", "601.63"];

 $result = array_combine($codici_hotel_arr,$codici_price_arr);
 print '<pre>';
 print_r($result);
 print '</pre>';

结果:

Array (
    [1074d0] => 160.16
    [19f726] => 234.32
    [1072ba] => 256.88
    [183444] => 325.42
    [1071bf] => 342.22
    [112438] => 353.30
    [1b326e] => 365.78
    [15d8ab] => 372.84
    [19d885] => 395.72
    [193e61] => 478.75
    [10aab2] => 503.36
    [107155] => 543.39
    [110669] => 584.61
    [189b95] => 584.61
    [16d78f] => 597.70
    [18dd7d] => 601.63 
)

编辑:因为我不理解您的预期结果,所以我也将其发布。如果您想要字符串格式,请尝试这样,

function print_string($v, $k) {
   echo "$k->$v\n";
}

array_walk($result, "print_string");

答案 1 :(得分:0)

假设数组的索引是对齐的,我会这样做:

<?php
for($i = 0; $i < count($codici_definitivi); $i++) {
    echo $codici_definitivi[0] . ' -> ' . $codici_prezzi[0];
    // or set up any other mapping you need, e.g. key => value in another array
}
?>

编辑:您应该将此映射放在implode语句之前,否则用字符串覆盖原始数组。

答案 2 :(得分:0)

$new_codici_prezzi = array();
if(count($codici_definitivi) === count($codici_prezzi)){
    for($i = 0; $i < count($codici_definitivi); $i++){
        $new_codici_prezzi[$codici_definitivi[$i]] = $codici_prezzi[$i];
    }
}

//之后,$ new_codici_prezzi是你的新阵列。