1

我知道这一定是非常基本的,但我真的不知道如何解决这个问题。我想将 php 数组转换为以下符号,以便在 javascript 脚本中使用。这些是在初始化时传递给 js 脚本的国家。

源符号 (PHP)

array(3) { [0]=> array(1) { ["code"]=> string(2) "AR" } [1]=> array(1) { ["code"]=> string(2) "CO" } [2]=> array(1) { ["code"]=> string(2) "BR" } }

期望的结果(JS)

[ "AR", "FK","CO", "BO", "BR", "CL", "CR", "EC", "GT", "HN", "LT", "MX", "PA", "PY", "PE", "ZA", "UY", "VE"]

我可以根据需要重新格式化原始 PHP 数组,我需要知道的是如何格式化它以获得所需的结果。

我正在使用以下代码将数组传递给 js:

echo "<script>var codes = " . json_encode($codes) . ";</script>";
4

3 回答 3

3

看起来以下内容对您有用:

<?php

$arr[0]['code'] = 'AR';
$arr[1]['code'] = 'CO';
$arr[2]['code'] = 'BR';

print_r($arr);


function extract_codes($var) { return $var['code']; }

print_r(array_map('extract_codes', $arr));

echo json_encode(array_map('extract_codes', $arr));

?>

输出:

Array
(
    [0] => Array
        (
            [code] => AR
        )

    [1] => Array
        (
            [code] => CO
        )

    [2] => Array
        (
            [code] => BR
        )

)
Array
(
    [0] => AR
    [1] => CO
    [2] => BR
)
["AR","CO","BR"]

它通过将每个两个字母代码映射到一个普通的一维数组,然后将其传递给 json_encode 来工作。

于 2012-10-17T16:30:05.040 回答
0

Going with array_reduce:

$output = array_reduce($array, function($result, $item){

    $result[] = $item['code'];
    return $result;

}, array());

echo json_encode($output);
于 2012-10-17T16:40:52.020 回答
0

您需要遍历 PHP 关联数组并设置适当的变量。像这样:

$item = ''; // Prevent empty variable warning
foreach ($php_array as $key => $value){
  if (isset($key) && isset($value)) { // Check to see if the values are set
    if ($key == "code"){ $item .= "'".$value."',"; } // Set the correct variable & structure the items
  }
}
$output = substr($item,'',-1); // Remove the last character (comma)
$js_array = "[".$output."]"; // Embed the output in the js array
$code = $js_array; //The final product
于 2012-10-17T16:47:32.870 回答