如何在页面中回显关联数组?

时间:2013-08-16 10:49:25

标签: php mysql html

我刚刚开始学习代码并且正在编写一些代码来回显数组,它给了我这两个错误:

  

警告: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>";
}
?>

4 个答案:

答案 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);
?>