PHPでの質問です。

$word = "$1,$2,$3,$4,";
上記の場合要素数は4だと思うのですが
その数値をを求めたいのです。
countでは上手くとれません。
間違っているだけかもしれまえせんが
上記の$wordの要素数を取得する方法を教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2006/12/08 11:37:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:cynix No.1

回答回数29ベストアンサー獲得回数0

ポイント20pt
$x = count(split(',', trim($word, ',')));

これはどうでしょう。

http://php.net/trim

http://php.net/split

http://php.net/count

id:quocard

なるほど。

PHPのサイトはあまり見ていませんでしたが

これだけでもかなり有用ですね。

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

2006/12/08 10:55:33
id:lovemaker No.2

回答回数59ベストアンサー獲得回数1

ポイント23pt

$word を配列にしたい場合は array() を使って代入します。

$word = array($a,$b,$c,$d);

echo count($word);

$word を文字列のまま使いたい場合は explode() で一旦配列にしてから count() すればいいと思いますよ。

$word = "$a,$b,$c,$d,";

echo count( explode(",",$word) );

id:quocard

ただ代入しただけでは配列になっていないということですね。

凄く初歩的なことみたいですね。

ありがとうございます。

2006/12/08 11:34:29
id:kn1967 No.3

回答回数2915ベストアンサー獲得回数301

ポイント20pt

デリミタ(区切り文字)の数+1が要素数ですから、

  $word = "$1,$2,$3,$4,";

の要素数は5です。

countは配列の要素数を数えるものですからsplitなどで配列に変換すれば数えることが可能となります。

$a = split(",",$word)

$b = count($a);

後々使いまわす予定が無いのであれば

$b = count(split(",",$word));

id:quocard

そもそも$word自体が配列になっていなかったということですね。

初歩的な所だったみたいです。

とても参考になりました。

ありがとうございます。

2006/12/08 11:35:21
id:goxu No.4

回答回数3ベストアンサー獲得回数0

ポイント21pt

count() は配列でないと使えないです。ですのでいったん配列にしてみて count() 使用してみてはどうでしょうか? explode でコンマごとに文章を区切って配列に格納できます。

$number = explode(",", $word);

echo count($number);

もしくは、.= を使用してそのつど、数を足していくとか。

$word = "$1,$2,$3,$4,";

これを

$number = 0;

$word = "$1,";

$number++;

$word .= "$2,";

$number++;

$word .= "$3,";

$number++;

$word .= "$4,";

$number++;

にするとか。

id:quocard

explodeでも対応できるみたいですね。

もしくはその都度足していくというのは

なかなか面白そうです。

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

2006/12/08 11:36:02
id:ito-yu No.5

回答回数323ベストアンサー獲得回数14

ポイント20pt

カンマの数を数えたいだけなら

$count = strlen(preg_replace('/[^,]/', '', $word));

で取れますよ。

id:quocard

なるほど。

カンマの数だけ数えても同等の数値が得られますね。

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

2006/12/08 11:36:33

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません