【问题标题】:Add arrays in an array into javascript file with PHP使用PHP将数组中的数组添加到javascript文件中
【发布时间】:2015-08-03 10:37:44
【问题描述】:

我不明白出了什么问题..

基本上我有一个 javascript 文件,我们可以在其中找到一个多维数组。在我的 php 文件中,我使用“json_decode”对 file.js 进行解码,检查是否必须添加的数组以及“多维数组”中的最后一个数组。 如果它们不同,请添加。

问题是加法不去..

这是文件.js:

var eru = [
   [" 12 July-20 July 2015",18]
];

这个文件.php:

$intervallo= " 10 July-16 July 2015"
$numvulc= 25;
$aggiornamento= array($intervallo,$numvulc);

$fileeru= "out/eru.js";
$json = json_decode(file_get_contents($fileeru), true);

// how many arrays there are into multidimensional array **eru** 
$counteru= count($eru); 

//maybe here there's problem

if($eru[$counteru] != $aggiornamento){
  $eruzioni[]= $aggiornamento;
}

$eru= json_encode($eru);
$eru= 'var eru= '.$eru.';';
file_put_contents($fileeru,$eru);

比较不同然后我希望file.js现在是这样的:

var eruzioni = [
  [" 12 July-20 July 2015",18],
  [" 10 July-16 July 2015",25]
];

虽然如此:

var eruzioni = [
  [" 10 July-16 July 2015",25]
];

只有 $aggiornamento 并且最后一个数组被删除了... 当然,如果在比较两个数组时相等,则不 agiunge 什么都没有,并且文件没有被修改..

非常感谢!

【问题讨论】:

  • 你为什么要这么做?出于什么目的?你想达到什么特定的目标?
  • 我无法重现该代码的问题,但您最大的问题是 JavaScript 不是 JSON,因此您无法使用 json_decode 解析它!跨度>
  • 该文件包含javascript not json。删除var eru= 你可能有json。另外上面代码中没有初始化php变量$eru,也没有使用变量$json
  • @Quentin 我使用 json_encode 为 file.js 制作用 PHP 编写的数组(我在另一个问题中推荐过),然后我认为相反的效果是 json_decode。我错了吗?
  • @Giovanni-Borgia — 你不只是使用json_encode。你在它周围添加其他东西。

标签: javascript php multidimensional-array


【解决方案1】:

要将 javascript 文件解析为 json,您需要删除放在它周围的 var 表达式。由于您似乎不确定您使用的是var eru = 还是var eruzioni =,所以我只使用了第一个括号。

改变这个:

$json = json_decode(file_get_contents($fileeru), true);

到这里:

$file_contents = file_get_contents($fileeru);
$json_string = substr($file_contents,strpos($file_contents,'['),-1);
$json = json_decode($json_string);

编辑添加: 考虑以下代码(我替换了文件函数,因此您可以将其粘贴到 phpcodepad.com 中,看看它是如何工作的)

$intervallo= " 15 July-25 July 2015";
$numvulc= 30;
$aggiornamento= array($intervallo,$numvulc);

//$fileeru= "out/eru.js";
//$file_contents = file_get_contents($fileeru);
//GET DATA FROM STRING INSTEAD OF FILE
$file_contents = 'var eruzioni = [
  [" 12 July-20 July 2015",18],
  [" 10 July-16 July 2015",25]
];';
$json_string = substr($file_contents,strpos($file_contents,'['),-1);
$json = json_decode($json_string);

// how many arrays there are into multidimensional array **eru** 
$counteru= count($json);

//maybe here there's problem

if($json[$counteru-1] != $aggiornamento){
  $json[]= $aggiornamento;
}

$eru= json_encode($json);
$eru= 'var eru= '.$eru.';';
//file_put_contents($fileeru,$eru);
//ECHO INSTEAD OF WRITE TO FILE
echo '<pre>' . $eru . '</pre>';

【讨论】:

  • 我添加 $counteru= count($json->result); if($json[$counteru] != $aggiornamento){ $json[]= $aggiornamento; } $eru= json_encode($json); $eru='var eruzioni='.$json.';'; file_put_contents($fileeru,$json);但不起作用... :(
  • 对不起,我听不懂你在说什么。
  • 抱歉,为什么我必须删除您的代码,而不能同时删除“[”和“]”?
  • 它不应该删除“[”,应该保持完整。
  • 啊啊啊是的明白了,要知道多维数组有多少个数组,用$counteru= count($json->result);是真的吗?跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多