0

毕竟我很抱歉我的英语。

我正在用PHP编写脚本,但遇到了一个小问题。

这个想法是为每行文本创建一个数组,并将第四个值替换为表示状态的字符串。

我有一行文字,例如 2022,33422,0,1,0,22

单行可以创建数组,但多行会产生意想不到的结果。

例子:

2022,33422,0,1,0,22

2024,3232,01,1,04,298762

        $myArray = explode(',', $uploadServer);
        $status = array(0  => "Unprocessed",
                 1  => "Processing",
                 2  => "Download aborted because the file became too big.",
                 3  => "Download aborted because the file downloaded too long.",
                 4  => "Download finished. Uploading to RapidShare.",
                 5  => "Upload to RapidShare finished. Job finished.",
                 7  => "Upload failed 3 times for unknown reasons. Job aborted.",
                 8  => "Upload failed because the file is black listed.",
                 9  => "Download failed for unknown reasons.",
                 11 => "Enqueued for later processing because this account already downloads 5 files at the same time.");



        foreach ($myArray as $valor) {
              if(array_key_exists($valor[3],$status)) {

                    return $passer[] = $status[$valor[3]];

              } else {

                    return FALSE;

              }
        }

$myArray的结果是

Array
(
    [0] => 2022
    [1] => 33422
    [2] => 0
    [3] => 1
    [4] => 0
    [5] => 22
)

但我需要这个最终数组

Array
(
[0]=>array(
          [0] => 2022
          [1] => 33422
          [2] => 0
          [3] => Processing
          [4] => 0
          [5] => 22
          )

[1]=>array(
           [0] => 2022
           [1] => 33422
           [2] => 0
           [3] => Processing
           [4] => 0
           [5] => 22
          )
)

任何的想法?谢谢

4

2 回答 2

0

如果我对您的理解正确,那么您正在考虑解决方案。

   foreach ($myArray as $valor) { 
          if(isset($status[$valor[3]])) {  # this checks if there is a status with that index/key
                 return $passer[] = $status[$valor[3]]; 
           } else { 
                 return FALSE; 
           } 
    } 
于 2012-09-20T17:47:25.883 回答
0

更新:所以你有一个带有换行符的字符串。此换行符是一个不可见字符 (\n)。首先在每个换行符处拆分您的字符串。然后循环遍历这个数组。拆分每个逗号上的字符串并使用索引 3 更改值:

$myArray = explode("\n", $uploadServer);

$status = array(0  => "Unprocessed",
             1  => "Processing",
             2  => "Download aborted because the file became too big.",
             3  => "Download aborted because the file downloaded too long.",
             4  => "Download finished. Uploading to RapidShare.",
             5  => "Upload to RapidShare finished. Job finished.",
             7  => "Upload failed 3 times for unknown reasons. Job aborted.",
             8  => "Upload failed because the file is black listed.",
             9  => "Download failed for unknown reasons.",
             11 => "Enqueued for later processing because this account already downloads 5 files at the same time.");

$passer = array(); //create array to fill
foreach( $myArray as $valor ) { //loop through lines
   if( !empty($valor) ) { // check for empty line
     $tmp = explode(',', $valor);  //make array of strings
     if(array_key_exists($tmp[3],$status)) {  //check value [3]
       $tmp[3] = $status[$tmp[3]];
     }     
     $passer[] = $tmp;   //append array to parent array
  } 
}
于 2012-09-20T17:53:52.267 回答