非法字符串偏移' ERROR'第33行

时间:2018-05-02 14:00:43

标签: php string

当我运行此代码时,我在Perfect money网站上找到了它,它导致

  

PHP警告:非法字符串偏移'错误'在第33行

你可以请别人解释一下为什么? - 顺便说一句。第33行是:$ar[$key]=$item[2];

以下是代码:

<?php

/*

This script demonstrates transfer proccess between two
PerfectMoney accounts using PerfectMoney API interface.

*/

// trying to open URL to process PerfectMoney Spend request
$f=fopen('https://perfectmoney.is/acct/confirm.asp?AccountID=myaccount&PassPhrase=mypassword&Payer_Account=U987654&Payee_Account=U1234567&Amount=1&PAY_IN=1&PAYMENT_ID=1223', 'rb');

if($f===false){
   echo 'error openning url';
}

// getting data
$out=array(); $out="";
while(!feof($f)) $out.=fgets($f);

fclose($f);

// searching for hidden fields
if(!preg_match_all("/<input name='(.*)' type='hidden' value='(.*)'>/", $out, $result, PREG_SET_ORDER)){
   echo 'Ivalid output';
   exit;
}

$ar="";
foreach($result as $item){
   $key=$item[1];
   $ar[$key]=$item[2];
}

echo '<pre>';
print_r($ar);
echo '</pre>';



?>

我在PHP 7.1上运行它

1 个答案:

答案 0 :(得分:1)

在您的代码中,您首先将$ ar声明为字符串:

$ar="";

然后你将它用作数组:

foreach($result as $item){
   $key=$item[1];
   $ar[$key]=$item[2];
}

您可以通过更改

来解决此警告
$ar="";

以下之一:

$ar=[]; // Short array declaration

$ar = array(); // Long array syntax declaration

 // Remove the line altogether, PHP can handle this.