2017-05-09 242 views
0

我有一個問題tryng來填充一個基於其他陣列陣列...讓我解釋一下你的問題填充數組

我有這樣的陣列

$contents = (
    [0] => Array 
     (
      [id] => 1 
      [title] => Text1 
      [slug] => text1 
     ) 
[1] => Array 
     (
      [id] => 2 
      [title] => Text2 
      [slug] => text2 
     ) 
[2] => Array 
     (
      [id] => 3 
      [title] => Text3 
      [slug] => text3 
     ) 
[3] => Array 
     (
      [id] => 4 
      [title] => Text3 
      [slug] => text3 
     ) 

然後創建了一個變量$第一陣列內從上述蛞蝓

foreach($contents as $key => $value) { 
     $st[$key] = $value['slug']; 
    } 

然後我內線racted從內部代碼點火器的URI段與

$path = $this->uri->segment(1); 

於是我脫下$ PATH的值從$ ST陣列:

if(($key = array_search($path, $st)) !== false) { 
     unset($st[$key]); 
    } 

然後我把$ ST陣列,以便與

$stack = array_values($st); 

最後,我已經通過了新的數組循環,看看是否有在裏面的值,如果真我相對陣列內推,像這樣:

$per[] = array(); 
while($i < count($contents)) { 
     if(in_array($path, $stack) === FALSE) { 
      array_push($per, $percorsi[$i]); 
     } 
     $i++; 
    } 

最後我有一個空的數組,如果我把,如果不是陣列我有新的陣列中的所有四個元素。

我希望我已經解釋了我很好的。

感謝您的幫助

乾杯

+0

在while循環我已經把array_push($每,$ percorsi [$ I]);但是我犯了一個錯誤。在代碼中是這樣的: array_push($ per,$ contents [$ i]); –

+0

相反,爲什麼不 - 「if(!in_array($ path,$ stack))'? – Thamilan

+0

它給我的所有四個元素,而跳過一個以$路徑值 –

回答

1

改變這一點。正如你正在定義多個數組。因此值沒有被插入

$per = []; 
+0

真。但它又返回所有四個元素......這就像不會使if語句 –

+0

做一件事刪除該錯誤,並在其他部分推到數組。 Echo在旁邊籤if語句 – Exprator

+0

不起作用......在循環 如果(in_array($路徑,$棧))始終是真的還是假的所有4例。但有一個$ path = text1和$ stack = array('text1','text2','text3','text4)的in_array(); 這很奇怪艱難 –

0

確定我找到了解決辦法改變位工作流程如下所示:

$per = array(); 
    $path = $this->uri->segment(1); 

    foreach($contents as $key => $value) { 
     $stack[$key] = $value['slug']; 
    } 

    $i=0; 
    while($i <= 3) { 
     if($path !== $stack[$i]) { 
      array_push($per, $contents[$i]); 
     } 
     $i++; 
    } 

感謝。

0

這裏是簡單的解決方案:

$contents = array ( 
0 => Array 
     (
      'id' => 1, 
      'title' => 'Text1', 
      'slug' => 'text1', 
     ), 
1 => Array 
     (
      'id' => 2, 
      'title' => 'Text2', 
      'slug' => 'text2' 
     ), 
2 => Array 
     (
      'id' => 3, 
      'title' => 'Text3', 
      'slug' => 'text3' 
     ), 
3 => Array 
     (
      'id' => 4, 
      'title' => 'Text3', 
      'slug' => 'text3' 
     ) 

); 

$path = 'text3'; //$this->uri->segment(1); 
foreach($contents as $key=>$val){ 
    if(in_array($path, $val)){ 
     unset($contents[$key]); 
    } 
} 
echo "<pre>"; print_r($contents); 

Demo