2016-12-09 4 views
0

배열입니다. 배열의 마지막 빈 값 (예 : , rtrim) 만 제거해야합니다. 배열의배열의 마지막 null 값을 제거하십시오.

print_r(array_filter($arr, 'strlen')); 

하지만 제거 모든 null 값 :

[0] => Array 
    (
     [0] => 6 
     [1] => 50967 
     [2] => 50647 
     [3] => 4024 
     [4] => 
     [5] => testme 
     [6] => 125 
     [7] => onlinecode.org 
     [8] => 
     [9] => You 
     [10] => 4 
     [11] => Toys 
     [12] => 135 
     [13] => 
     [14] => 
     [15] => 
    ) 

내가 사용이 코드를 해요.

예상 출력 :

[0] => Array 
    (
     [0] => 6 
     [1] => 50967 
     [2] => 50647 
     [3] => 4024 
     [4] => 
     [5] => testme 
     [6] => 125 
     [7] => onlinecode.org 
     [8] => 
     [9] => You 
     [10] => 4 
     [11] => Toys 
     [12] => 135 
    ) 

답변

0

다음 코드는 당신이 원하는 것을 할 것입니다 :

<?php 
$a = 1; 
$b = 2; 
$c = 3; 
$d = 4; 

$arr = array(
array ($b, $d, $c, $a, $b), 
array ($c, $a), 
array ($b, $d, $c), 
array($c, $d, $a, $b, $b) 
); 
echo "before:\n"; 
print_r($arr); 

foreach($arr as $k1=>$q) { 
    foreach($q as $k2=>$r) { 
    if($r == $c) { 
     unset($arr[$k1][$k2]); 
    } 
    } 
} 
echo "after:\n"; 
print_r($arr); 
?> 

출력 : 당신이 볼 수 있듯이

before: 
Array 
(
    [0] => Array 
     (
      [0] => 2 
      [1] => 4 
      [2] => 3 
      [3] => 1 
      [4] => 2 
     ) 

    [1] => Array 
     (
      [0] => 3 
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => 2 
      [1] => 4 
      [2] => 3 
     ) 

    [3] => Array 
     (
      [0] => 3 
      [1] => 4 
      [2] => 1 
      [3] => 2 
      [4] => 2 
     ) 

) 
after: 
Array 
(
    [0] => Array 
     (
      [0] => 2 
      [1] => 4 
      [3] => 1 
      [4] => 2 
     ) 

    [1] => Array 
     (
      [1] => 1 
     ) 

    [2] => Array 
     (
      [0] => 2 
      [1] => 4 
     ) 

    [3] => Array 
     (
      [1] => 4 
      [2] => 1 
      [3] => 2 
      [4] => 2 
     ) 

) 

, 모든 3의의가 갔다. ..

0

테스트 할 수 있습니다. 마지막 배열 항목이 비어있는 경우 제거하십시오.

편집업데이트pastebin showing it works

+0

감사,하지만 난 모든 마지막으로 널 (null) 값이 아닌 하나를 제거합니다. –

+0

@krunal - 아, 걱정하지 마세요, 사소한 업데이트. pastebin도 업데이트되었습니다. – WEBjuju

1

가정 $의 편곡이 (분명 OP에서 보여되지 않음) 2 차원 배열입니다 여기 영업 이익의 $arr

$found_value = 0; 
foreach ($arr as &$array) { 
    do { 
     if (empty(($array[count($array)-1]))) { 
      array_pop($array); 
     } else { 
      $found_value = 1; 
     } 
    } while (empty($found_value)); 
} 

의 여러 차원에 대한 지원을 추가 , 비어있는 경우 각 하위 배열의 마지막 구성원이 제거됩니다.

foreach ($arr as $key => $val) { 
    if (trim($val[count($val) - 1]) == '') { 
     unset($val[count($val) - 1]); 
    } 
} 
+0

작동하지 않음 : https://eval.in/693848 –

+0

@krunal 일반, OP에서 보여준 내용을 처리 했으므로 보통 1 차원 배열입니다! 2 차원 어레이에 대한 업데이트 된 답변을 참조하십시오. – cFreed

0

PHP의 array_reverse을 사용하여 문제를 해결할 수 있습니다. 다음과 같이 할 수 있습니다.

// Let Array be 
$arr = [1, 2, 3, 4, null, 6, null, null]; 

foreach (array_reverse($arr) as $value) { 
    if(is_null($value)) { 
     unset($arr[count($arr) - 1]); 
    } else { 
     break; 
    } 
} 
print_r($arr); 

/* Output 
array:7 [ 
    0 => 1 
    1 => 2 
    2 => 3 
    3 => 4 
    4 => null 
    5 => 6 
] */ 

희망이 있습니다.

0

은 구분 기호를 사용하여 배열을 문자열로 변환합니다. 마지막 구분 기호를 자릅니다. 마침내 트랜스 뒤로.

<?php 

$multiArray = [ 
       [1,2,3,4,null,6,null,null], 
       [2,3,4,5,null, 8, null, 8, null, null] 
       ]; 

var_dump(array_map("mytrim", $multiArray)); 


function mytrim($array) 
{ 
    return explode(',', rtrim(implode(',', $array), ',')); 
} 

다음 출력 : 답변

[email protected]:~$ php cal.php 
array(2) { 
    [0]=> 
    array(6) { 
    [0]=> 
    string(1) "1" 
    [1]=> 
    string(1) "2" 
    [2]=> 
    string(1) "3" 
    [3]=> 
    string(1) "4" 
    [4]=> 
    string(0) "" 
    [5]=> 
    string(1) "6" 
    } 
    [1]=> 
    array(8) { 
    [0]=> 
    string(1) "2" 
    [1]=> 
    string(1) "3" 
    [2]=> 
    string(1) "4" 
    [3]=> 
    string(1) "5" 
    [4]=> 
    string(0) "" 
    [5]=> 
    string(1) "8" 
    [6]=> 
    string(0) "" 
    [7]=> 
    string(1) "8" 
    } 
} 
+0

나는 다차원 배열을 가지고있다. –

+0

@krunal 그것을 확인하십시오, 나는 멀티 어레이를 위해 그것을 확인합니다. –