我刚刚开始学习代码并且正在编写一些代码来回显数组,它给了我这两个错误:
警告:array_keys()期望参数1为数组,在第70行的C:\ xampp \ htdocs \ ogmt \ rest_server_api.php中给出null
警告:第71行的C:\ xampp \ htdocs \ ogmt \ rest_server_api.php中为foreach()提供的参数无效..
我如何解决这个问题?这是我的代码:
if($Result1){
// script to get business no, amount & merchant id,output to merchant page
$query="SELECT * FROM customer_order WHERE order_time=(SELECT max(order_time)from customer_order)";
$result=mysql_query($query);
while($row=mysql_fetch_assoc($result)){
$amount=$row['amount'];
$id=$row['merchant_id'];
$payment_mode=$row['mobile_service'];
switch($payment_mode){
case 'TIGO-PESA':
$result1=mysql_query("SELECT * FROM mobile_client WHERE mobile_service='TIGO-PESA'");
while($row1=mysql_fetch_assoc($result1)){
$data=array(
'Business no'=>$row1['business_no'],
'Payment Mode'=>$payment_mode,
'Total Amount Tsh'=>$amount,
'Merchant ID'=>$id
);
}break;
case 'M-PESA':
$result1=mysql_query("SELECT * FROM mobile_client WHERE mobile_service='M-PESA'");
while($row1=mysql_fetch_assoc($result1)){
$data=array(
'Business no'=>$row1['business_no'],
'Payment Mode'=>$payment_mode,
'Total Amount Tsh'=>$amount,
'Merchant ID'=>$id
);
}break;
case 'AIRTEL-MONEY':
$result1=mysql_query("SELECT * FROM mobile_client WHERE mobile_service='AIRTEL-MONEY'");
while($row1=mysql_fetch_assoc($result1)){
$data=array(
'Business no'=>$row1['business_no'],
'Payment Mode'=>$payment_mode,
'Total Amount Tsh'=>$amount,
'Merchant ID'=>$id
);
}break;
// default:
$data=array('error'=>"no payment mode selected");
}
$response=array('details'=>$data);
}
}
else{
$response=array('details'=>"query failed!");
}
}
//print output to merchant page to complete payment
$keys = array_keys($data);
foreach($response['details'] as $keys=>$value){
echo "$keys: $value</br>";
}
?>
答案 0 :(得分:1)
包装此代码
<?php
if(isset($response['details']) && is_array($response['details'])){
foreach($response['details'] as $keys=>$value){
echo "$keys: $value</br>";
}
}else{
echo "Array is empty";
}
?>
答案 1 :(得分:1)
您无法回显数组,您可以尝试使用var_dump($data);
或print_r($data)
此外,您可以使用implode("", $_POST[$data]);
,更接近回声。
答案 2 :(得分:0)
如果您看到它们是相当大的数组,请尝试使用这些工具。 http://krumo.sourceforge.net/
加载后,您可以在PHP代码中执行此类简单调用。从站点下载脚本并将其放入您的站点并使用require()函数
进行调用require 'class.krumo.php';
krumo($your_array); // will output your array :)
答案 3 :(得分:0)
只需使用print_r函数即可查看内容。 [顺便提一下你有一个额外的支撑(删除它)]
<?php
if($Result1){
// script to get business no, amount & merchant id,output to merchant page
$query="SELECT * FROM customer_order WHERE order_time=(SELECT max(order_time)from customer_order)";
$result=mysql_query($query) or die("MySQL ERROR: ".mysql_error());;
while($row=mysql_fetch_assoc($result)){
$amount=$row['amount'];
$id=$row['merchant_id'];
$payment_mode=$row['mobile_service'];
switch($payment_mode){
case 'TIGO-PESA':
$result1=mysql_query("SELECT * FROM mobile_client WHERE mobile_service='TIGO-PESA'");
while($row1=mysql_fetch_assoc($result1)){
$data=array(
'Business no'=>$row1['business_no'],
'Payment Mode'=>$payment_mode,
'Total Amount Tsh'=>$amount,
'Merchant ID'=>$id
);
}
break;
case 'M-PESA':
$result1=mysql_query("SELECT * FROM mobile_client WHERE mobile_service='M-PESA'");
while($row1=mysql_fetch_assoc($result1)){
$data=array(
'Business no'=>$row1['business_no'],
'Payment Mode'=>$payment_mode,
'Total Amount Tsh'=>$amount,
'Merchant ID'=>$id
);
}break;
case 'AIRTEL-MONEY':
$result1=mysql_query("SELECT * FROM mobile_client WHERE mobile_service='AIRTEL-MONEY'");
while($row1=mysql_fetch_assoc($result1)){
$data=array(
'Business no'=>$row1['business_no'],
'Payment Mode'=>$payment_mode,
'Total Amount Tsh'=>$amount,
'Merchant ID'=>$id
);
}break;
default:
$data=array('error'=>"no payment mode selected");
break;
}
$response=array('details'=>$data);
}
}
else{
$response=array('details'=>"query failed!");
}
//print output to merchant page to complete payment
print_r($data);
?>