こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHP 配列について

PHPで簡単なプログラムを作っています。
上手い方法があれば教えてください。
例えば
$arr = array();
$arr(0) = "ABC";
$arr(1) = "DEF";
$arr(2) = "GHI";
$arr(3) = "JKL";
$arr(4) = "MNO";
この様な配列があり、これを以下の様に「特定のデータを削除し空いているキーを詰めたい」場合どうしたら良いのでしょうか?
この場合は"DEF"を削除。
$arr(0) = "ABC";
$arr(1) = "GHI";
$arr(2) = "JKL";
$arr(3) = "MNO";

アドバイスお願いします。

投稿日時 - 2008-02-02 00:22:59

QNo.3735782

すぐに回答ほしいです

質問者が選んだベストアンサー

<?php
$arr = array();
$arr{0} = "ABC";
$arr{1} = "DEF";
$arr{2} = "GHI";
$arr{3} = "JKL";
$arr{4} = "MNO";
//最初にDEFが見つかった番号
//なければfalse

$hoge = array_search("DEF",$arr,1);
//何故こういう書き方をしているかはarray_spliceのマニュアルを見ればわかるかと
if($hoge !== false){
array_splice($arr,$hoge,1);
}


print_r($arr);

?>

投稿日時 - 2008-02-02 01:05:32

お礼

ありがとうございます。
サンプルがまさにやりたかった事です。
助かりました。

投稿日時 - 2008-02-02 14:36:29

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

ANo.1 です
2 番目(添字=1)の要素を削除する例です。
$arr = array_splice($arr, 1);

投稿日時 - 2008-02-02 01:08:34

お礼

ありがとうございます。
度々すいませんでした。

投稿日時 - 2008-02-02 14:37:04

ANo.2

$arr = array_values($arr);

でいいと思います(下記のソースで確認しました)。

  <?php
  $arr = array();
  $arr[0] = "ABC";
  $arr[2] = "GHI";
  $arr[3] = "JKL";
  $arr[4] = "MNO";
  $arr = array_values($arr);
  print_r($arr);
  ?>

result:
  Array ( [0] => ABC [1] => GHI [2] => JKL [3] => MNO )

投稿日時 - 2008-02-02 00:38:57

補足

ごめんなさい。

$arr = array();
$arr(0) = "ABC";
$arr(1) = "DEF";
$arr(2) = "GHI";
$arr(3) = "JKL";
$arr(4) = "MNO";

unset($arr(1));

$arr = array_values($arr);

で出来ました。
ありがとうございました。

投稿日時 - 2008-02-02 01:02:32

お礼

ありがとうございます。
試してみたのですが、上手くいきませんでした。
$arr = array();
$arr(0) = "ABC";
$arr(1) = "DEF";
$arr(2) = "GHI";
$arr(3) = "JKL";
$arr(4) = "MNO";

$arr(1) = "";

$arr = array_values($arr);

print_r($arr);

結果:
Array ( [0] => ABC [1] => [2] => GHI [3] => JKL [4] => MNO )

お願いいたします。

投稿日時 - 2008-02-02 00:58:47

ANo.1

> どうしたら良いのでしょうか?
マニュアル(array_splice)を読む。

投稿日時 - 2008-02-02 00:36:12

お礼

ありがとうございます。
マニュアル(array_splice)を読んだのですが、今回の場合にどう使うかが分かりません。
簡単で良いのでサンプルを頂けるとありがたいです。
お願いします。

投稿日時 - 2008-02-02 00:54:59