2017-05-28 38 views
0
$travels = [ 
    0 => ['departure' => 'Paris', 'arrival' => 'Nantes'], 
    1 => ['departure' => 'Orleans', 'arrival' => 'Nantes'], 
    2 => ['departure' => 'Dublin', 'arrival' => 'Tours'], 
    3 => ['departure' => 'Paris', 'arrival' => 'Orleans'], 
    4 => ['departure' => 'Paris', 'arrival' => 'Nice'], 
    5 => ['departure' => 'Nice', 'arrival' => 'Nantes'], 
    6 => ['departure' => 'Nice', 'arrival' => 'Tours'], 
    7 => ['departure' => 'Tours', 'arrival' => 'Amboise'], 
    8 => ['departure' => 'Nice', 'arrival' => 'Nantes'], 
]; 

所以這是我的代碼,我想用這個多數組作爲數據庫,但是沒有查詢的權利?因此,我只想從一次出發得到所有到達值,就像所有從巴黎開始的到達值一樣,我已經在foreachloop中用foreach循環嘗試了很多事情,並且如果使用索引數組但是沒有機會使用索引數組, 。有沒有辦法做到這一點,如在MySQL中的查詢。如何使用數組作爲數據庫?

會是這樣的:

"SELECT 'arrival' FROM 'travels' WHERE 'departure' = Paris" 
+1

你已經嘗試了foreach循環;你能包括嗎?另外,這個數組最初來自哪裏? – Terminus

+1

可能重複的[PHP篩選器2維數組按特定鍵](https://stackoverflow.com/questions/7341033/php-filter-2-dimensional-array-by-specific-key) – Pyromonk

回答

0

這將讓所有來港定居人士與出發「巴黎」:

<?php 
$travels = [ 
    0 => ['departure' => 'Paris', 'arrival' => 'Nantes'], 
    1 => ['departure' => 'Orleans', 'arrival' => 'Nantes'], 
    2 => ['departure' => 'Dublin', 'arrival' => 'Tours'], 
    3 => ['departure' => 'Paris', 'arrival' => 'Orleans'], 
    4 => ['departure' => 'Paris', 'arrival' => 'Nice'], 
    5 => ['departure' => 'Nice', 'arrival' => 'Nantes'], 
    6 => ['departure' => 'Nice', 'arrival' => 'Tours'], 
    7 => ['departure' => 'Tours', 'arrival' => 'Amboise'], 
    8 => ['departure' => 'Nice', 'arrival' => 'Nantes'], 
]; 
foreach ($travels as $key => $value) { 
    if ($value['departure'] == 'Paris') { 
     echo $value['arrival']; 
} 
} 
?> 

這將列出所有來港定居人士,但是,如果你想限制只顯示抵達名稱一次,您將不得不添加一些代碼。

+2

您應該使用一個foreach循環。 –

+0

這就像一個魅力,事實上我已經發現,第一次我用if語句,我做了一次等號的基本錯誤大聲笑,我感到沮喪,但一如既往,最終它總是作品thx! –

+0

@BunkerBoy在這種情況下,「double foreach不起作用」究竟如何? – junkfoodjunkie

2

據我理解你的問題,你可以做這樣的事情:

$resultArr = []; 

array_walk($travels, function($value, $key) use (&$resultArr) { 
    if($value['departure'] == 'Paris') 
     $resultArr[$key] = $value; 
}); 

這將填補你與那些偏離,這只是從巴黎新數組。

另一種方法是使用array_filter由mfonda在他的一個帖子answer建議:

$filtered = array_filter($travels, function($v) { return $v['departure'] == 'Paris'; }); 
+0

Thx對於響應,實際上我使用過類似的東西,我已經使用了if語句,但在foreach循環之後而不是array_walk thx獲得幫助 –

相關問題