0

我有一个数组,例如:

[['jkjhkfhkjh jkj jkjhk', '54.324705', '-2.749629', '189', 1, 1, 0, 0, 'Test two', '2 ', '10+', 'http://xx.co.uk/xx/?post_type=listings&amp;p=189', '<img width="160" height="85" src="http://www.xx.com/manage/wp-content/uploads/wheelbase.jpg" class="attachment-thumbnail wp-post-image" alt="wheelbase" title="wheelbase">', '189'],['fghfghfgh &nbsp;fghfg hf dfh dfh', '54.323174', '-2.744554', '188', 1, 1, 0, 0, 'Test', '2 ', '10+', 'http://xx/xx/?post_type=listings&amp;p=188', '<img width="160" height="85" src="http://www.xx.com/manage/wp-content/uploads/wheelbase.jpg" class="attachment-thumbnail wp-post-image" alt="wheelbase" title="wheelbase">', '188']];

我使用 php 获取数据:

echo "[";
  for ($i=0; $i < count($json); $i++) { 
    echo "['" . $json[$i]["content"] . "', '". $json[$i]["lat"] . "', '" . $json[$i]["long"] . "', '" . $json[$i]["id"] . "', 1, 1, 0, 0, '" . $json[$i]["title"] . "', '2 ', '10+', '" . $json[$i]["link"] . "', '<img width=\"160\" height=\"85\" src=\"http://www.xx.com/manage/wp-content/uploads/wheelbase.jpg\" class=\"attachment-thumbnail wp-post-image\" alt=\"wheelbase\" title=\"wheelbase\" />', '" . $json[$i]["id"] . "'],";
  }   
  echo "]";

(我叫了一个变量$json,忽略我叫它的事实,它不是 json)

所以我将这些回显到一个将被隐藏的 div 中。然后在javascript中拿起它,我试试这个:

var locations = $('#listingsarray').html();

这似乎可以很好地转换为控制台,但它是以文本而不是数组的形式出现的。我怎样才能把它变成一个数组?

4

3 回答 3

2

用于JSON.parse将字符串解析为 JSON,但请记住它是无效的。你最好这样做:

echo json_encode(array_map("array_values",$json));

这假设键的顺序是“内容”、“纬度”、“长”……并且没有其他键。如果不是这种情况,您需要遍历数组以确保一切正常,然后使用json_encode.

于 2013-08-21T14:19:25.633 回答
1

首先,您需要构建数组的有效 json 表示,您使用的技术会导致语法无效。这应该对你更好。

$data = array();
for ($i=0; $i < count($json); $i++) { 
  $data[] =  array(
                  $json[$i]["content"],
                  $json[$i]["lat"],
                  $json[$i]["long"],
                  $json[$i]["id"],
                  1,
                  1,
                  0,
                  0,
                  $json[$i]["title"],
                  '2',
                  '10+',
                  $json[$i]["link"],
                  '<img width=\"160\" height=\"85\" src=\"http://www.xx.com/manage/wp-content/uploads/wheelbase.jpg\" class=\"attachment-thumbnail wp-post-image\" alt=\"wheelbase\" title=\"wheelbase\" />',
                  $json[$i]["id"]
              );
}
$jsonString = json_encode($data);

然后,如果您想将其放入 json 上下文中,您可以简单地执行此操作

<script>var jsonArray = <?= $jsonString ?>;</script>
于 2013-08-21T14:35:47.267 回答
1

如果您在页面加载时输出此内容,请尝试以下操作:

echo "<script>var locations = [";
for ($i=0; $i < count($json); $i++) { 
  //...
}   
echo "]</script>";

然后您的 javascript 将可以直接访问locations变量和数组,而无需eval对其进行翻译或编译。

虽然我肯定会考虑使用json_encode,因为这些库在处理边缘情况方面要好得多,而且代码也更干净。

于 2013-08-21T14:23:27.567 回答