質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

3回答

855閲覧

配列の順位を返す方法について

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/06/02 09:54

test.php

php

1<?php 2$file_name = "score.txt"; /*読込ファイルの指定*/ 3$log4 = file( $file_name ); /*ファイルを全て配列に入れる*/ 4$log6 = array(); 5 6for($i = 0 ; $i < count($log4); $i++){ 7$log5[$i] = explode(",",$log4[$i]); 8array_push($log6,$log5[$i][3]); 9} 10 11print_r($log6); 12 13$score=10; 14 15rsort($log6); 16 17print_r($log6); 18 19$i=100; 20 21while ($score >= $log6[$i]) { 22$i++; 23} 24echo $log6[$i]; 25 26?> 27 28

score.txt
,6,3,3
a,4,2,2
a,4,2,20
,2,,200

出力結果
Array ( [0] => 3 [1] => 2 [2] => 20 [3] => 200 ) Array ( [0] => 3 [1] => 200 [2] => 20 [3] => 2 )

やりたいこと
$score=10;の値つまり10が、score.txtの各行の3要素目の数値の中で何番目かを、echoにより出力したい。

まず、なぜかsortができていません、1以降は200,20,2と減っていますが、0が3です、
またechoもされません、なぜでしょう・・・。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/02 10:26

未解決の質問放置のままじゃどんなアドバイスも無駄なのでやめてください。解決してから次に行ってください。
m.ts10806

2021/06/02 10:27

基礎ゼロのままで理解できるわけがないので基礎をやってください。
退会済みユーザー

退会済みユーザー

2021/06/02 10:41

すいません↑はプログラムに詳しい5chの友達の自演です。
m.ts10806

2021/06/02 10:45

いや、もうそういうのいいんで。 それこそ証拠ないし、赤の他人からすれば出てきたものが全て。 事実かどうか関係なく「言い訳」です。 それならさっさと退会して乗っ取られないアカウント作れば良いでしょう。 それをしないのは怠慢です。それとも同じ指摘を何百回もされたいですか?
K_3578

2021/06/03 00:40

プログラムに詳しい5chの友達って誰のことを言ってるんだ。
guest

回答3

0

以前の質問とほぼ同じだと思いますけど?
回答を検証する気がないなら質問をしても無駄ではないでしょうか?

PHP

1$fp=fopen('score.txt','r'); 2while($row=fgetcsv($fp,1024)){ 3 $rows[]=$row; 4} 5fclose($fp); 6$score=10; 7$rank=count(array_filter($rows,function($x) use($score){ 8 return $x[3]>$score; 9}))+1; 10print $rank;

投稿2021/06/02 10:01

yambejp

総合スコア114883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/02 10:24

このコードはちょっと自分には難しかったようです。
guest

0

PHP: 配列のソート - Manual
PHPでのソート用関数は、機能によって使い分けが必要で、
質問者さんは間違ったものを選択してしまったってことです。

PHP: rsort - Manual
関数の仕様も読まずにいい加減に使ってますよね。
rsort() の第2引数に、SORT_NUMERICを使ってみるとか、
ソート対象の配列のデータ型をint型にしてみるとかしないと、
意図したとおりにならないでしょうね。

投稿2021/06/02 09:57

編集2021/06/02 10:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/06/03 00:20

terataillerさん向けの回答で、型は大事的なことを伝えたつもりだったんですけどねー、知ってるよね?
guest

0

値が文字列として評価されているため、"200", "20", "2"の順になっていると思われます。

array_push($log6,$log5[$i][3]);

のところを、

array_push($log6,(int)$log5[$i][3]);

とすれば、数値として評価されるようになるので期待した動作になると思います。

投稿2021/06/02 10:02

Arahabica

総合スコア209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問