2017-05-09 202 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