ホームページ  >  記事  >  バックエンド開発  >  多次元配列から空のレコードを削除する方法についてアドバイスを求める

多次元配列から空のレコードを削除する方法についてアドバイスを求める

WBOY
WBOYオリジナル
2016-06-23 13:38:37734ブラウズ




空のレコードをすべて削除したいのですが、削除後にいくつかのキーがなくなったので、キーを再配置する必要があります
たとえば、 $arr['0'] $arr['3' を削除するとします。 ] $arr ['5'] の場合、並べ替えられた結果は $arr['0'] $arr['1'] $arr['2'] $arr['3'] $arr['4'] になります。 $arr[ '5']。 。 。 。
もちろん、画像は 2 次元配列です。


オンラインで試したメソッドは使いにくいです。
function array_no_empty($arr) {
if (is_array($arr)) {
foreach ( $arr as $k => $v ) {
if (empty($v)) unset($arr[$k]);
elseif (is_array($v); ) {
$arr[$ k] = array_no_empty($v);
}
}
}
return $arr; }

これは役に立ちませんね。真ん中の array_no_empty が未定義か何かだと言い続けます

他に方法はありますか? ありがとうございます


ディスカッションに返信してください (解決策)

array_no_empty 関数は利用可能です

しかし、問題があります。空のメンバー 配列

$a = array(  array('a' => 0, 'b'=> ''),  array('a' => 0, 'b'=> ''),  array('a' => 1, 'b'=> '2'),);print_r(array_values(array_no_empty($a)));function array_no_empty($arr) {  if (is_array($arr)) {    foreach ( $arr as $k => $v ) {      if (empty($v)) unset($arr[$k]);      elseif (is_array($v)) {        $arr[$k] = array_no_empty($v);      }    }  }  return $arr;}
Array(    [0] => Array        (        )    [1] => Array        (        )    [2] => Array        (            [a] => 1            [b] => 2        ))

修正された
$a = array(  array('a' => 0, 'b'=> ''),  array('a' => 0, 'b'=> ''),  array('a' => 1, 'b'=> '2'),);print_r(array_no_empty($a));function array_no_empty($arr) {  if (is_array($arr)) {    foreach ( $arr as $k => $v ) {      if (empty($v)) unset($arr[$k]);      elseif (is_array($v)) {        $t = array_no_empty($v);        if($t) $arr[$k] = $t;        else unset($arr[$k]);      }    }  }  return $arr;}
Array(    [2] => Array        (            [a] => 1            [b] => 2        ))

array_values 関数を使用して添え字
$a = array(  array('a' => 0, 'b'=> ''),  array('a' => 0, 'b'=> ''),  array('a' => 1, 'b'=> '2'),);print_r(array_values(array_no_empty($a)));function array_no_empty($arr) {  if (is_array($arr)) {    foreach ( $arr as $k => $v ) {      if (empty($v)) unset($arr[$k]);      elseif (is_array($v)) {        $t = array_no_empty($v);        if($t) $arr[$k] = $t;        else unset($arr[$k]);      }    }  }  return $arr;}
Array(    [0] => Array        (            [a] => 1            [b] => 2        ))
を並べ替えることができます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。