2017-03-03 115 views
0

我试图从MySQL查询中使用foreach添加循环内的所有数据。数据包括密钥和值。但在我的代码中,它是在我想要的数组之前用整数键包围的。在循环中设置密钥和值

下面的代码:

$count_get_airlines = $wpdb->get_var("SELECT COUNT(*) FROM wp_shipping_airlines"); 

foreach ($get_airlines as $airlines_data) { 
    $data[] = [$airlines_data->letter_code => $airlines_data->shipping_airline]; 
} 
print_r($data); 

如下的结果:

Array ( 
    [0] => Array ([CA] => Air China) 
    [1] => Array ([PX] => Air Niugini) 
    [2] => Array ([OZ] => Asiana Airlines) 
    [3] => Array ([CI] => China Airlines) 
    [4] => Array ([MU] => China Eastern Airlines) 
    [5] => Array ([CZ] => China Southern Airlines) 
    [6] => Array ([ET] => Ethiopian Airlines) 
    [7] => Array ([EY] => Etihad) 
    [8] => Array ([BR] => Eva Air) 
    [9] => Array ([GF] => Gulf Air) 
    [10] => Array ([JL] => Japan Airlines) 
    [11] => Array ([7C] => Jeju Air) 
    [12] => Array ([KE] => Korean Airlines) 
    [13] => Array ([KU] => Kuwait Airlines) 
    [14] => Array ([MU] => Malaysian Airlines) 
    [15] => Array ([WY] => Oman Air) 
    [16] => Array ([QF] => Qantas Airlines) 
    [17] => Array ([QR] => Qatar Airways) 
    [18] => Array ([BI] => Royal Brunei) 
    [19] => Array ([SV] => Saudia Airlines) 
    [20] => Array ([TG] => Thai Airways) 
    [21] => Array ([TR] => Tiger Airways) 
    [22] => Array ([TK] => Turkish Airlines) 
    [23] => Array ([UA] => United Airlines) 
    [24] => Array ([MF] => Xiamen Airlines) 
    [25] => Array ([PR] => Philippine Airlines) 
    [26] => Array ([DL] => Delta Air Lines) 
    [27] => Array ([CX] => Cathay Pacific Airways) 
    [28] => Array ([SQ] => Singapore Airlines) 
    [29] => Array ([NH] => All Nippon Airways) 
    [30] => Array ([EA] => Emirates Airlines) 
    [31] => Array ([AK] => AirAsia Phils.) 
    [32] => Array ([5J] => Cebu Pacific) 
); 

我想要什么:

Array(  
    'CA'=> 'Air China (CA)', 
    'PX'=> 'Air Niugini (PX)', 
    'OZ'=> 'Asiana Airlines (OZ)', 
    'CI'=> 'China Airlines (CI)', 
    'MU'=> 'China Eastern Airlines (MU)', 
    'CZ'=> 'China Southern Airlines (CZ)', 
    'ET'=> 'Ethiopian Airlines (ET)', 
    'EY'=> 'Etihad (EY)', 
    'BR'=> 'Eva Air (BR)', 
    'GF'=> 'Gulf Air (GF)', 
    'JL'=> 'Japan Airlines (JL)', 
    '7C'=> 'Jeju Air (7C)', 
    'KE'=> 'Korean Airlines (KE)', 
    'KU'=> 'Kuwait Airlines (KU)', 
    'MU'=> 'Malaysian Airlines (MU)', 
    'WY'=> 'Oman Air (WY)', 
    'QF'=> 'Qantas Airlines (QF)', 
    'QR'=> 'Qatar Airways (QR)', 
    'BI'=> 'Royal Brunei (BI)', 
    'SV'=> 'Saudia Airlines (SV)', 
    'TG'=> 'Thai Airways (TG)', 
    'TR'=> 'Tiger Airways (TR)', 
    'TK'=> 'Turkish Airlines (TK)', 
    'UA'=> 'United Airlines (UA)', 
    'MF'=> 'Xiamen Airlines (MF)', 
    'PR' => 'Philippine Airlines (PR)', 
    'AK' => 'AirAsia Phils. (AK)', 
    'NH' => 'All Nippon Airways (NH)', 
    'CX' => 'Cathay Pacific Airways (CX)', 
    '5J' => 'Cebu Pacific (5J)', 
    'DL' => 'Delta Air Lines (DL)', 
    'EA' => 'Emirates Airlines (EA)', 
    'SQ' => 'Singapore Airlines (SQ)' 
); 

我缺少什么?我究竟做错了什么? 任何帮助是高度赞赏。

谢谢! -Eli

回答

1

您需要设置键值,而不是在数组内创建新的数组。

$count_get_airlines = $wpdb->get_var("SELECT COUNT(*) FROM wp_shipping_airlines"); 

$data =[]; 
foreach ($get_airlines as $airlines_data) { 
    $data[$airlines_data->letter_code] = $airlines_data->shipping_airline; 
} 
print_r($data); 
+0

你所有的答案是正确的!我只是想,也尝试过。感谢你们!在我能接受你的答案之前9分钟。 :) –

0
$count_get_airlines = $wpdb->get_var("SELECT COUNT(*) FROM wp_shipping_airlines"); 

foreach ($get_airlines as $airlines_data) { 
    $data[$airlines_data->letter_code] = $airlines_data->shipping_airline; 
} 
print_r($data); 
+0

虽然这段代码是受欢迎的,并且可能会提供一些帮助,但如果它包含* how *和* why *的解释](// meta.stackexchange.com/q/114762)解决了这个问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

1

请这个尝试:

$count_get_airlines = $wpdb->get_var("SELECT COUNT(*) FROM wp_shipping_airlines"); 

foreach ($get_airlines as $airlines_data) { 
    $data[$airlines_data->letter_code] =$airlines_data->shipping_airline; 
} 
print_r($data); 
+0

为什么这个答案downvote ..任何人解释.. –

1

您正在数组的数组,这是不是你想要的。你想创建一个关联数组。试试这个代码:

$count_get_airlines = $wpdb->get_var("SELECT COUNT(*) FROM wp_shipping_airlines"); 

foreach ($get_airlines as $airlines_data) { 
    $data[$airlines_data->letter_code] = sprintf('%s (%s)', 
      $airlines_data->shipping_airline, 
      $airlines_data->letter_code 
    ); 
} 
print_r($data);