配列要素の削除方法について - PHPプロ!Q&A掲示板

1475

  • 0P

配列要素の削除方法について

質問日時 / 2008年9月3日 17:15 (最終編集:9月3日 17:17)    回答数 / 3件

Questioner:  abc1234  このエントリーをはてなブックマークに追加 

キーワード / キーワードが設定されていません

あるデータを読み込み配列へ代入したところ
以下のようになってしまいました。

要素にどのような値が入っているのか調べる方法または
空要素(空に見える?)を削除する方法を教えてください。
※当該要素は不規則で発生しています。
以上、宜しくお願い致します。

変数名は$aで、

[0]=>名称
[1]=>
[2]=>abc
[3]=>住所
[4]=>
[5]=>名古屋
[6]=>
[7]=>電話番号
[8]=>
[9]=>
[10]=>000-0000
[11]=>氏名

・・・以下省略

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01yakou850とりあえず空文字なのかNULLなのかを調べるため、 va
┣A02NurseAngelarray_walkではできないみたい ・順に確認 fore
┗A03tezcelloかなりピッタリな関数 array_filter() があります。

回答一覧

並び替え:

A01 参考になった
answereryakou850 [9月3日 17:33]

とりあえず空文字なのかNULLなのかを調べるため、
var_dump()を使ってはいかがでしょう?
これだと型がなんなのかを教えてくれます。
# stringなのかnullなのかintなのかなどなど

この意見に回答する

ツリーへ TOPへ

A02 参考になった
answererNurseAngel [9月3日 18:21] (最終編集:9月3日 18:22)

array_walkではできないみたい


・順に確認
foreach($a as $key=>$val){
 if($val==='' || is_null($val)){unset($a[$key])}
}


・動くかどうかわかんない
$a=array_diff($a,array(''))

この意見に回答する

ツリーへ TOPへ

A03 満足
answerertezcello [9月3日 23:59]

かなりピッタリな関数 array_filter() があります。
配列の各要素をユーザ定義関数(下の例では、delnul())の結果に従い削除してくれます。
  指定したユーザ定義関数が TRUE を返せば残します。FALSE の場合は削除します。
「空に見える」の場合は、実際にどのようになっているかで処理が異なりますが、それに応じた処理をすればよいでしょう。

  1. function delnul($var){
  2.   if ($var == '') return FALSE;
  3.   return TRUE;
  4. }
  5.  
  6. $ary = array('名称', '', 'abc', '住所', '', '名古屋', '', '電話番号', '', '', '000-0000', '氏名');
  7.  
  8. print_r(array_filter($ary, 'delnul'));

結果は
  1. Array
  2. (
  3.     [0] => 名称
  4.     [2] => abc
  5.     [3] => 住所
  6.     [5] => 名古屋
  7.     [7] => 電話番号
  8.     [10] => 000-0000
  9.     [11] => 氏名
  10. )


でも、後からそういう処理をするのでは無く、読み込んだ値を配列に代入する時に気を使うべきでしょうね。
元がファイルであるなら、
  1. $trimmed = file('somefile.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
とする事で、改行文字も空行も無視されます。(PHP5 以上でないと使えません)

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
負荷時のmysql_connect()エラー
 このエントリーをはてなブックマークに追加 
A
これはPHPというよりOSまたはMySQLのコミュニティで質問されたほうがいいと思います。 ぱっと思いついた範囲で記すと MySQL等のDBに「ある時点において同時に接続可能なクライアントの最大数」に制限があるよう...

>>続きを読む

今回のような実践的な経験がエンジニアのキャリアに繋がると思います。是非サービスを成功させて下さい!

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)