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

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

问题描述:

I have the following code that fetches arrays from a 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);

The code returns these values:

**$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".

I would need to get a $codici_prezzi for each $codici_definitivi. As a response of a string cURL, both codes are as follows:

1074d0 -> 160.16;

19f726 -> 234.32;

1072ba -> 256.88;

etc...

It's possible?

Thank you

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

  $ 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); 
  code>  pre> 
 
 

代码返回以下值: p>

  ** $ 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“。
  code>  pre> 
 
 

我需要一个 $ codici_prezzi strong> 对于每个 $ codici_definitivi strong>。 作为字符串cURL的响应,两个代码如下: p>

1074d0 - > 160.16; p>

19f726 - > 234.32; p>

1072ba - > 256.88; p>

等...... p>

有可能吗? p>

谢谢 p> DIV>

If I don't misunderstood your requirement then this should work. Remove extra imploding and try to array_combine() the two corresponding arrays.

  // 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>';

Result:

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 
)

Edit: Because I don't understand your expected result that's why I post it also.If you want it on string format then try like this,

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

array_walk($result, "print_string");

Supposing that the indices of the arrays are aligned, I would do this:

<?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
}
?>

Edit: you should place this mapping before the implode statements, otherwise you overwrite the original arrays with strings.

$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];
    }
}

//After that, $new_codici_prezzi is your new array.