1

PHP スクリプトがファイル内のデータをエコーするのに時間がかかりすぎています。いくつかのループが間違っていて、処理に時間がかかりすぎているようです。誰か私のコードを見て、どこが間違っていたのか教えてください。私の仕事は、JSON データ配列をループして、XML タグでデータをエコーすることです。私の json 配列は [["GENERIC SALES PRICE", ""],["REGION", "SALE PRICE"],["AMERICA", "260,000"],["ASIA","340,000"],. 。等]

$fp = fopen("data_save2.json", "r");
$inp=file_get_contents("data_save2.json");
fclose($fp);
$inp=json_decode($inp);
$inp_info=$inp;
$start_row=0;
$start_col=0;
for($i=0; $i <= $inp_info; $i++) {
    for($j=0; $j <= $inp_info; $j++) {
        if ($inp_info[$i][$j]=='GENERIC SALES PRICE') {
          $start_row=$i+1;
          $start_col=$j;
            }     
$row_index=$start_row;
      $rows_of_data=0;

   while($inp_info[$row_index][$start_col]!=''){
    $rows_of_data = $rows_of_data+1;
    $row_index = $row_index+1;}
    }
} 
$dir = "C:/../data/GenericSalePrice.xml";
  $fp = fopen($dir, 'w');     
  fwrite($fp,'<?xml version="1.0" encoding="UTF-8" standalone="yes"?>');
  fwrite($fp,"\n");
  fwrite($fp,'<generic-sales-price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">');
  fwrite($fp,"\n");
  for($j=0; $j<=$rows_of_data; $j++){
    fwrite($fp,"\t<sale-price>\n");
    $region = $inp_info[$start_row+$j][$start_col];
    fwrite($fp, "\t\t<region>");        
    fwrite($fp,"$region");
    fwrite($fp, "</region>\n");
    $price =$inp_info[$start_row+$j][$start_col+1];
    fwrite($fp, "\t\t<price>");
    fwrite($fp, "$price");
    fwrite($fp, "</price>\n");
    fwrite($fp, "\t</sale-price>\n");

        }  

fwrite($fp, "</generic-sales-price>");

    fclose($fp);

これで私を助けてください、前もって感謝します

4

2 に答える 2

0

バグが見つかりました..私は使用していました

for($i=0; $i <= $inp_info; $i++) {
for($j=0; $j <= $inp_info; $j++) {

今、私はそれを

for($i=0; $i <= count($inp_info); $i++) {
for($j=0; $j <= count($inp_info); $j++) {

それは働き始めました。皆様、お時間とご尽力いただきありがとうございます

于 2013-10-09T16:01:02.140 に答える
0

警告-ここで手足を出して、適切なデータなしで速度または構文を確認するためのテストを行わずに、これを私の答えとして使用します。

$xml_file = "C:/../data/GenericSalePrice.xml";

$header = 
<<<EOT
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <generic-sales-price xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
EOT;

$body = '';
for($j=0; $j<=$rows_of_data; $j++) {

    $region = $inp_info[$start_row+$j][$start_col];
    $price = $inp_info[$start_row+$j][$start_col+1];

    $temp_body = 
<<<EOT
    <sale-price>
        <region>        
            {$region}
        </region>
        <price>
            {$price}
        </price>
    </sale-price>
EOT;

    $body .= $temp_body;
}

$footer = "</generic-sales-price>";

$string = $header . $body . $footer;

file_put_contents($xml_file, $string);
于 2013-10-09T13:51:38.333 に答える