Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP访问数组元素_Php_Mysql_Sql_Arrays - Fatal编程技术网

使用PHP访问数组元素

使用PHP访问数组元素,php,mysql,sql,arrays,Php,Mysql,Sql,Arrays,为了避免多个mysql SELECT查询,我尝试将SELECT从foreach循环中去掉 问题是 SELECT o.orders_id, o.date_purchased, o.orders_status, ot.text AS order_total, os.orders_status_name FROM " . TABLE_ORDERS . " o JOIN " . TABLE_ORD

为了避免多个mysql SELECT查询,我尝试将SELECT从foreach循环中去掉

问题是

 SELECT    o.orders_id,
          o.date_purchased,
          o.orders_status,
          ot.text AS order_total,
          os.orders_status_name
FROM      " . TABLE_ORDERS . " o
JOIN      " . TABLE_ORDERS_TOTAL . " ot ON (o.orders_id = ot.orders_id AND ot.class = 'ot_total')
JOIN      " . TABLE_ORDERS_STATUS . " os ON (o.orders_status = os.orders_status_id AND os.language_id = " . (int)$_SESSION['languages_id'] . ")
WHERE     o.customers_id = " . (int)$_SESSION['customer_id'] . "
ORDER BY  orders_id DESC
结果我得到了名为$history_result['result']的数组,它看起来像

Array
(
  [0] => Array
  (
    [orders_id] => 309
    [date_purchased] => 2013-10-02 15:49:54
    [orders_status] => 1
    [order_total] =>  9,00 €
    [orders_status_name] => Offen
  )
  [1] => Array
  (
    [orders_id] => 308
    [date_purchased] => 2013-10-02 15:39:54
    [orders_status] => 1
    [order_total] =>  9,00 €
    [orders_status_name] => Offen
  )
  [2] => Array
  (
    [orders_id] => 307
    [date_purchased] => 2013-10-02 15:33:48
    [orders_status] => 1
    [order_total] =>  9,00 €
    [orders_status_name] => Offen
  )
)
在下面的foreach循环中是下一个MySql查询

foreach ($history_result['RESULT'] as $history) {
  $trackings   = $db->result("-- 03 account_history_info.php
    SELECT o.ortra_parcel_id,
           c.carrier_tracking_link,
           c.carrier_name
    FROM   " . TABLE_ORDERS_TRACKING . " o
    JOIN   " . TABLE_CARRIERS . " c ON o.ortra_id = c.carrier_id
    WHERE  ortra_order_id = " . $history['orders_id']
  );
}
如何直接访问数组元素“orders\u id”,以便创建一个SQL语句,如

$trackings   = $db->result("-- 03 account_history_info.php
    SELECT o.ortra_parcel_id,
           c.carrier_tracking_link,
           c.carrier_name
    FROM   " . TABLE_ORDERS_TRACKING . " o
    JOIN   " . TABLE_CARRIERS . " c ON o.ortra_id = c.carrier_id
    WHERE  ortra_order_id IN = " . implode(',', $fooArray)
  );

是否可以使用嵌套的select将必须执行的查询合并到一个查询中,如:

SELECT FROM (SELECT FROM ... )

或者我可能缺少一些微妙之处吗?

您是否可以使用嵌套的select将必须执行的查询合并到一个查询中,如:

SELECT FROM (SELECT FROM ... )
$fooArray = array_column($history_result['RESULT'], 'orders_id');
或者我可能遗漏了一些微妙之处

$fooArray = array_column($history_result['RESULT'], 'orders_id');
注意:PHP 5>=5.5.0


注意:PHP 5>=5.5.0

此函数看起来很棒,完全符合我的要求,但仅适用于PHP>=5.5。此函数看起来很棒,完全符合我的要求,但仅适用于PHP>=5.5,效果完美。谢谢你。谢谢