php解压&;unpack给出的数组包含几个(10309中的9个)未定义的值

php解压&;unpack给出的数组包含几个(10309中的9个)未定义的值,php,arrays,decode,unpack,compression,Php,Arrays,Decode,Unpack,Compression,我有一个二进制数据字符串,我使用php解压并解压到一个数组中,并使用以下代码(此php页面的完整代码包含在问题的底部): 最奇怪的是,如果我在完整/原始代码(见页面底部)中手动输入字符串,我会得到未定义的值,而如果我在下面的代码中手动输入通过执行“echo$row[4]”(包含二进制字符串)返回的字符串,则不会产生未定义的值 <?php $string = " /* Copy the string in the spoiler (on this page) here */ "; $

我有一个二进制数据字符串,我使用php解压并解压到一个数组中,并使用以下代码(此php页面的完整代码包含在问题的底部):

最奇怪的是,如果我在完整/原始代码(见页面底部)中手动输入字符串,我会得到未定义的值,而如果我在下面的代码中手动输入通过执行“echo$row[4]”(包含二进制字符串)返回的字符串,则不会产生未定义的值

<?php
  $string = " /* Copy the string in the spoiler (on this page) here */ ";
  $int = base64_decode($string);
  $unc_int = gzuncompress($int);
  $max = strlen($unc_int);
  $counter = 0; 
  $max_int = 0;
  for ($i = 0; $i < $max; $i = $i + 4) {
     $temp= substr($unc_int,$i,4);
     $temp = unpack("f",$temp);
     $int_array[$counter] = $temp[1];
     echo $counter;
     echo " -- ";
     echo $int_array[$counter];
     echo "<br/>";
     $counter++;
  }
?>

有人有什么建议或想法吗?为什么会发生这种情况

PS:有人可以添加标签gzuncompress吗?(我没有这个名声)

编辑1

我已经包括了一个示例binaryString(警告:巨大!)

Y-Coords(由代码中注释的echo$行[4]检索):

研究结果表明,他们的研究结果是一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的研究成果,一个关于某一领域的某一领域的研究成果,一个领域的研究成果,一个关于某一领域的某一个领域的某一领域的某一领域的某一领域的研究成果,某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的某一领域的研究成果I5K3CEP1(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是(2)这个词的意思是,这个词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是一个单词的意思是,或者或者或者或者或者是JFXPRJYQBZSRGAAJ97UMTRFFYJ4WKD9GYTCULBHU7Z/rzoO3dtT2.目前,中国政府正在研究一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,一种新的研究方法,即GBGBG7-BZZZH7-7-V7-V7-VV7-V7-V7-V7-VV7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-V7-VV7-VVVVVV7-VVV7-V7-V7-V7-V7-VV7-V7-VVVV7-V7-VGDOZLBUJNAG//CMCYOTQ11C8和CK5UGB1/hvsmw4.中国政府的一个研究项目,一个研究,一个研究,一个研究,一个研究,一个研究,一个研究,VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFNEKSVNBM+RYvw6fHt1n0Iakk9GMXurL/e5uz3onpYb(2)研究对象(vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv7EJPGBEAWR2ZLTI/OZXLNDZMGJMMJB2.本研究提出了一种新的研究方法,该研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的框架,一个研究的内容包括:一个研究的框架,一个研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的内容包括:一个研究的框架,一个研究的框架,一个研究的框架,一个研究的内容包括一个研究的框架,一个研究的框架,一个研究的内容包括一个研究的框架,一个研究的框架,一个研究的框架,一个研究的框架,一个研究的框架,一个研究的框架,一个研究的框架,一个研究的框架,一个研究的框架。一个研究的框架。一个研究的框架。一个研究的框架。一个研究的框架。一个研究的框架。一个研究的框架。2 RT59PMSMIDOJ9O6CGV/TKssO2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 H7H47SM/Avj0/Y6nGpjjOv8)ZJJJJJA/SJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJMN0OWLI3Y36B3LCMWZY2GVxeMAYS+H4r//8iOk9l7lmL+nrLiJsyR4s+P+在中国,一个关于某一领域的研究。一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某一领域的研究,一个关于某某一领域的研究,或者某某某一领域的研究,或者某某某一方面的研究,或者某一点关于中国的研究,或者某某一行业的某某某某一中国的研究,或者某某某某一行业的研究,某某一行业的研究,或者某某某某某某某一行业的某某某某某某一行业的某一行业的研究,或者某一中国的某某某某某某某某某某某某某某某一行业的某某某某某某某某某某某某某某某某某某一行业的某某某某某某某某某VC+HbsQ/Qrq+7/BGgfTYP+ncVnrPa234ScWdHrfMiPItkNbsBa一个ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ+LijEu1c/ICdyVlLqKMOnfrP12.在一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的时代,一个新的一个新的时代,一个新的一个新的时代,一个新的时代,一个新的一个时代,一个时代,一个新的一个时代,一个新的一个时代,一个时代,一个新的一个时代,一个新的一个新的一个时代,一个时代,一个新的一个时代,一个新的一个时代,一个新的一个时代,一个新的一个时代,一个时代,一个新的一个新的一个新的一个时代,一个FFNZWCXWG9MGQC0LRLDY9V2.在一个月内,一个月内,一个月内,一个月内,一个月内,一个月内,六个月内,六个月内,六个月内,六个月内,六个月内,六个月内,一个月内,一个月内,一个月内,一个月内,一个月内,一个月内,一个JJJJJJ5+4+4个VDLLLLLQQJJJJJJJ5+4+4个VDLLLLLQQQQQQQQQQQQQQGGGGG6,一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个关于一个XS+SJC9+0PH3oIPpE5x8SVesnMAJ3Dv8/1u2.中国的一个研究结果是一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的一个中国的六个中国的六个中国的六六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的六个中国的中国的中国的中国的六个中国的六个中国的中国的中国的中国OSBRK+eBR5Z1zN6mvJf+YuEZCFFLU4ENoc+C3/A1L7lu0twMP我国目前的一个城市是中国的一个城市,在这个城市的一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个城市,一个政府,一个城市,一个政府,一个城市,一个城市,一个政府,一个城市,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府,一个政府EGMWxCMW9LUD6NFDEV北京WZDSZTXSSUHWZ/dpVRPZD+xYVdD7JNqSsq7rLp8xU13s3NrwDWsRdG6q4pqZHIh3cFHdZ4FsqAY/XCS9ZXD1JUCSMG5OM9JEFC119KE5BXY6+ZCGPJMW5A4RNXHXYNW1TA+MTN82JFCXCG9PCDYH4GM8QTKN2M6I3M/RKG9T8CMWYZXSN
for ($i = 0; $i < $counter; $i++) {
  echo $i;
  echo " -  ";
  echo $mz_array[$i];
  echo " - ";
  echo $int_array[$i];
  echo "<br/>";
} 
671 - 274.20001220703 - 429
672 - 274.39999389648 -
673 - 274.60000610352 - 1098
-- skipping a few lines --
10299 - 2199.8000488281 - 0
10300 - 2200 - 0
10301 - - 0
10302 - - 0
<?php
  $string = " /* Copy the string in the spoiler (on this page) here */ ";
  $int = base64_decode($string);
  $unc_int = gzuncompress($int);
  $max = strlen($unc_int);
  $counter = 0; 
  $max_int = 0;
  for ($i = 0; $i < $max; $i = $i + 4) {
     $temp= substr($unc_int,$i,4);
     $temp = unpack("f",$temp);
     $int_array[$counter] = $temp[1];
     echo $counter;
     echo " -- ";
     echo $int_array[$counter];
     echo "<br/>";
     $counter++;
  }
?>
<?php
  require 'phplot/phplot.php';
      $type = $_GET['type'];
      $gp = $_GET['gp'];
      $site = $_GET['site'];
      $prec = $_GET['prec'];
      $link = mysql_connect("localhost","reader","") or die (mysql_error());
      mysql_select_db('leidenGlycoPeptide') or die ();
      $query = sprintf("select precursor.mzValue, glycoPeptide.protein, binaryDataArray.arrayLength, binaryDataArray.encodedLength, binaryDataArray.arrayData, precursor.chargeState, run.pepMass, run.PepSeq from glycoPeptide, spectrum, binaryDataArray, run, precursor where run.glycoPeptide = glycoPeptide.id AND spectrum.run = run.id AND precursor.run = run.id AND binaryDataArray.spectrum = spectrum.id AND precursor.id = spectrum.precursor AND spectrum.spectrum like 'm/z' AND precursor.mzValue like '%s' and glycoPeptide.protein like '%s' and run.glycoSite like '%s' and run.glycoType like '%s' ORDER by glycoPeptide.protein, spectrum.spectrum",(string)$prec, (string)$gp, (string)$site, (string)$type);
      $result = mysql_query($query);
      $hits = 0;
      while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        $charge = $row[5];
        $pepmass = $row[6];
        $pepseq = $row[7];
        $glycopeptide[$hits] = $row[1];
        /* Manually entering string here also gives undefined values */
        /* $mz = " I was not able to include the mz string due to message size limit "; */
        $mz = base64_decode($row[4]);
        $unc_mz = gzuncompress($mz);
        $max = strlen($unc_mz);
        $counter = 0;
        for ($i = 0; $i < $max; $i = $i+4) {
          $temp = substr($unc_mz,$i,4);
          $temp = unpack("f",$temp);
          $mz_array[$counter] = $temp[1];
          $counter++;
        }
        $hits++;
      }
      $query = sprintf("select precursor.mzValue, glycoPeptide.protein, binaryDataArray.arrayLength, binaryDataArray.encodedLength, binaryDataArray.arrayData from glycoPeptide, spectrum, binaryDataArray, run, precursor where run.glycoPeptide = glycoPeptide.id AND spectrum.run = run.id AND precursor.run = run.id AND binaryDataArray.spectrum = spectrum.id AND precursor.id = spectrum.precursor AND spectrum.spectrum like 'intensity' AND precursor.mzValue like '%s' and glycoPeptide.protein like '%s' and run.glycoSite like '%s' and run.glycoType like '%s' ORDER by glycoPeptide.protein, spectrum.spectrum",(string)$prec, (string)$gp, (string)$site, (string)$type);
      $result = mysql_query($query);
      while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
        /* Manually entering string here also gives undefined values */
        /* $int = " Copy the string from above in here "; */
        $int = base64_decode($row[4]);
        /* The result from this is the above binaryString */
        /* echo $row[4]; */ 
        $unc_int = gzuncompress($int);
        $max = strlen($unc_int);
        $counter = 0;
        $max_int = 0;
        for ($i = 0; $i < $max; $i = $i + 4) {
          $temp= substr($unc_int,$i,4);
          $temp = unpack("f",$temp);
          $int_array[$counter] = $temp[1];
          $counter++;
          if ($temp[1] > $max_int) {
            $max_int = $temp[1];
            $counter++;
          }
        }
      }
      /* The following chunk is just to test the arrays */
      for ($i = 0; $i < $counter; $i++) {
        echo $i;
        echo " -  ";
        echo $mz_array[$i];
        echo " - ";
        echo $int_array[$i];
        echo "<br/>";
      }
      for ($i = 0; $i < $counter; $i++) {
        $plot_data[$i] = array('',$mz_array[$i],$int_array[$i]);
      }
      // Plot the regular spectrum
      $width = 1024;
      $height = 768;
      $plot = new PHPlot($width,$height);
      $plot->SetMarginsPixels(NULL,NULL,NULL,35);
      $plot->SetPrintImage(False);
      $plot->SetPlotType('thinbarline');
      //$plot->SetXTitle('m/z Values');
      $plot->SetXTickAnchor('400');
      $plot->SetDataColors('red');
      $plot->SetXTickIncrement('200');
      $plot->SetXDataLabelPos('none');
      $plot->SetYTitle('Intensity');
      $plot->SetYTickAnchor('0');
      //Might need to define this dynamically with nested if/else loops
      $plot->SetYTickIncrement('100000');
      $plot->SetDataType('data-data');
      $plot->SetDataValues($plot_data);
      $plot->SetTitle('Fragmentation Spectrum');
      //$plot->DrawGraph();

      mysql_close($link);
    ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <title>Query result page</title>
    <script src="jquery-1.9.1.min.js"></script>
  </head>
  <script>
    var gp = '<?php echo htmlspecialchars($_GET['gp']); ?>';
    $(document).ready(function() {
      $('.button').click(function() {
        window.open('http://www.uniprot.org/uniprot/?query='+gp+'+AND+organism:human&sort=score');
      });
      $('.XY').click(function() {
        var mz_array = <?php echo json_encode($mz_array) ?>;
        var int_array = <?php echo json_encode($int_array) ?>;
        var table = 
          "<table border=\"1\">"
            +"<tr>"
              +"<th>m/z</th>"
              +"<th>intensity<t/h>"
            +"</tr>";
        var max = <?php echo $counter ?>;
        for (var i = 0; i < max; i++) {
        table += "<tr>"
                   +"<td>"+mz_array[i]+"</td>"
                   +"<td>"+int_array[i]+"</td>"
                 +"</tr>";
        }
        table += "</table>";
        var disp = window.open();
        $(disp.document.body).html(table); 
      });
    });
  </script>
  <body>
    <p>The displayed spectrum belongs to <?php echo $gp ?> with a precursor [M+H] of <?php echo (($prec*$charge)-($charge+1)); ?>.<br>
    The peptide belonging to this glycopeptide has a mass of <?php echo $pepmass ?> and sequence: <?php echo $pepseq ?>.<br>
    <button class="button">Uniprot search</button> <button class="XY">Display XY data</button></p>
    <img src="<?php echo $plot->EncodeImage();?>" alt="Plot Image">
  </body>
</html>
$max = strlen($unc_mz);
  $counter = 0;
  for ($i = 0; $i < $max; $i = $i+4) {
    $temp = substr($unc_mz,$i,4);
    $temp = unpack("f",$temp);
    $mz_array[$counter] = $temp[1];
    $counter++;
  }
$mz_array = array_values(unpack("f*", $unc_mz));
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  $int = base64_decode($row[4]);
  $unc_int = gzuncompress($int);
  $int_array = array_values(unpack("f*",$unc_int));
  $max_int = max($int_array);
}
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
  $int = base64_decode($row[4]);
  $unc_int = gzuncompress($int);
  $max = strlen($unc_int);
  $counter = 0; 
  $max_int = 0;
  for ($i = 0; $i < $max; $i = $i + 4) {
    $temp= substr($unc_int,$i,4);
    $temp = unpack("f",$temp);
    $int_array[$counter] = $temp[1];
    $counter++;
    if ($temp[1] > $max_int) {
      $max_int = $temp[1];
    } 
  } 
}