若数组中的值不存在,PHP不显示变量
我不确定我问的问题是否正确,但我一直被困在如何防止值在数组中不存在时重复出现的问题上。以下是该阵列的一个示例:若数组中的值不存在,PHP不显示变量,php,arrays,Php,Arrays,我不确定我问的问题是否正确,但我一直被困在如何防止值在数组中不存在时重复出现的问题上。以下是该阵列的一个示例: Array ( [meta_id] => 995 [order_item_id] => 83 [meta_key] => Booking Date [meta_value] => February 7, 2015 ) Array ( [meta_id] => 996 [order_item_i
Array (
[meta_id] => 995
[order_item_id] => 83
[meta_key] => Booking Date
[meta_value] => February 7, 2015
)
Array (
[meta_id] => 996
[order_item_id] => 83
[meta_key] => Booking Time
[meta_value] => 7:00 am
)
Array (
[meta_id] => 997
[order_item_id] => 83
[meta_key] => First Name - First Name
[meta_value] => Dan
)
Array (
[meta_id] => 998
[order_item_id] => 83
[meta_key] => Church Information - Church Name
[meta_value] => Colonial Hills Baptist Church
)
Array (
[meta_id] => 1010
[order_item_id] => 84
[meta_key] => Booking Date
[meta_value] => January 8, 2015
)
Array (
[meta_id] => 1011
[order_item_id] => 84
[meta_key] => Booking Time
[meta_value] => 2:00 am
)
Array (
[meta_id] => 1012
[order_item_id] => 84
[meta_key] => First Name - First Name
[meta_value] => Gary
)
Array (
[meta_id] => 1013
[order_item_id] => 84
[meta_key] => Church Information - Church Name
[meta_value] => Victory Bible Church
)
Array (
[meta_id] => 973
[order_item_id] => 81
[meta_key] => Booking Date
[meta_value] => March 7, 2015
)
Array (
[meta_id] => 974
[order_item_id] => 81
[meta_key] => Booking Time
[meta_value] => 3:00 am
)
Array (
[meta_id] => 975
[order_item_id] => 81
[meta_key] => First Name - First Name
[meta_value] => Dan
)
Array (
[meta_id] => 925
[order_item_id] => 77
[meta_key] => Booking Date
[meta_value] => January 1, 2015
)
Array (
[meta_id] => 926
[order_item_id] => 77
[meta_key] => Booking Time
[meta_value] => 10:00 am
)
Array (
[meta_id] => 927
[order_item_id] => 77
[meta_key] => First Name - First Name
[meta_value] => Kent
)
...
您可以在这些数组中看到它们是按order\u item\u id键分组的。您还将看到order_item_id为81和77的数组没有教会信息-教会名称meta_键和meta_值
以下是生成这些数组的代码:
foreach( $order_items as $order_item ) {
$item_meta = $wpdb->get_results("
SELECT *
FROM {$wpdb->prefix}woocommerce_order_itemmeta
WHERE order_item_id = " . $order_item->order_item_id . "
");
$meta_array = objectToArray( $item_meta );
foreach( $meta_array as $data ) {
if( $data['meta_key'] == 'Booking Date' )
$date = $data['meta_value'];
if( $data['meta_key'] == 'Booking Time' )
$time = $data['meta_value'];
if( $data['meta_key'] == 'First Name - First Name' )
$fname = $data['meta_value'];
if( $data['meta_key'] == 'Church Information - Church Name' )
$church = $data['meta_value'];
if( $data['meta_key'] == 'Church Information - City' )
$city = $data['meta_value'];
if( $data['meta_key'] == 'Church Information - State' )
$state = $data['meta_value'];
}
echo $fname . ', ' . $church . '<br>';
}
如您所见,$church变量的结果正在重复,并显示在不存在该值的区域中。在上面的结果中,只有加里应该有“胜利圣经教会”的价值观
有人能帮我解决这个问题吗
谢谢您需要在每个周期初始化变量,如下所示:
foreach( $order_items as $order_item ) {
$item_meta = $wpdb->get_results("
SELECT *
FROM {$wpdb->prefix}woocommerce_order_itemmeta
WHERE order_item_id = " . $order_item->order_item_id . "
");
$meta_array = objectToArray( $item_meta );
$date = "";
$time = "";
fname = "";
$church = "";
$city = "";
$state = "";
foreach( $meta_array as $data ) {
if( $data['meta_key'] == 'Booking Date' )
$date = $data['meta_value'];
else if( $data['meta_key'] == 'Booking Time' )
$time = $data['meta_value'];
else if( $data['meta_key'] == 'First Name - First Name' )
$fname = $data['meta_value'];
else if( $data['meta_key'] == 'Church Information - Church Name' )
$church = $data['meta_value'];
else if( $data['meta_key'] == 'Church Information - City' )
$city = $data['meta_value'];
else if( $data['meta_key'] == 'Church Information - State' )
$state = $data['meta_value'];
}
echo $fname . ', ' . $church . '<br>';
}
foreach($order\u项目作为$order\u项目){
$item\u meta=$wpdb->get\u结果(“
挑选*
从{$wpdb->prefix}woocommerce\u order\u itemmeta
其中order\u item\u id=“.$order\u item->order\u item\u id.”
");
$meta\u array=objectToArray($item\u meta);
$date=“”;
$time=“”;
fname=“”;
$church=“”;
$city=“”;
$state=“”;
foreach($meta_数组作为$data){
如果($data['meta_key']=='Booking Date')
$date=$data['meta_value'];
否则如果($data['meta_key']=='Booking Time')
$time=$data['meta_value'];
else if($data['meta_key']=='First Name-First Name')
$fname=$data['meta_value'];
else if($data['meta_key']==“教堂信息-教堂名称”)
$church=$data['meta_value'];
否则如果($data['meta_key']=='Church Information-City')
$city=$data['meta_value'];
else if($data['meta_key']=='Church Information-State')
$state=$data['meta_value'];
}
echo$fname.,“.$church.”
;
}
您需要初始化循环中的变量,否则将使用旧值,如果第一条记录未设置,则在开始时会出现未定义变量的问题。2种方法:在所有ifs之前将所有变量(城市、教堂等)预设为空字符串,或者使用else语句将它们设置为空StringThreak@jeroen下面的答案让我看看初始化变量的含义。我正在编写自定义代码,以显示WooCommerce Bookings插件中Wordpress的特殊数据的预订日期。由于我是PHP新手,我想看看您是否可以查看我的代码并检查效率是否低下:()。该代码最终可以查询多达8700个订单。结果可以在这里看到:()
foreach( $order_items as $order_item ) {
$item_meta = $wpdb->get_results("
SELECT *
FROM {$wpdb->prefix}woocommerce_order_itemmeta
WHERE order_item_id = " . $order_item->order_item_id . "
");
$meta_array = objectToArray( $item_meta );
$date = "";
$time = "";
fname = "";
$church = "";
$city = "";
$state = "";
foreach( $meta_array as $data ) {
if( $data['meta_key'] == 'Booking Date' )
$date = $data['meta_value'];
else if( $data['meta_key'] == 'Booking Time' )
$time = $data['meta_value'];
else if( $data['meta_key'] == 'First Name - First Name' )
$fname = $data['meta_value'];
else if( $data['meta_key'] == 'Church Information - Church Name' )
$church = $data['meta_value'];
else if( $data['meta_key'] == 'Church Information - City' )
$city = $data['meta_value'];
else if( $data['meta_key'] == 'Church Information - State' )
$state = $data['meta_value'];
}
echo $fname . ', ' . $church . '<br>';
}