配列ソートに関して教えて頂きたいのですが、次のような配列を降順でソートするにはどのようなコードを書けば良いのでしょうか。

$a[] = array(4 => "four");
$a[] = array(3 => "three");
$a[] = array(20 => "twenty");
$a[] = array(10 => "ten");

usortなどを試したのですが、知識不足のためかどうも上手く動きません。
以上、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

「4. 3. 20. 10」をキーとして降順にソートする場合、次のようなコードでできます。



-----------------------------------------
$a[] = array(4 => "four");
$a[] = array(3 => "three");
$a[] = array(20 => "twenty");
$a[] = array(10 => "ten");

usort( $a, funcSort );

while( list( $key, $value ) = each( $a ) ){
  echo( $key );
  echo( ":" );

  list( $key1, $value1 ) = each( $value );
  echo( $key1 );
  echo( ":" );
  echo( $value1 );
  echo( "<br>" );
}

functionfuncSort( $a, $b ){
  reset( $a );
  reset( $b );

  list( $key1, $value1 ) = each( $a );
  list( $key2, $value2 ) = each( $b );

  if ( $key1 == $key2 ){
    return 0;
  }
  return ( $key1 > $key2 ) ? -1 : 1;
}
-----------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございました。
それと返事遅れてしまい申し訳ありません。

お礼日時:2001/12/06 14:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q$a[0]='w';$a[1]='r';を1回で

$a=array();
$a[0]='w';
$a[1]='r';
2行目と3行目を$a=はてな('w','r');
のように書くことはできませんか?

Aベストアンサー

こんにちは。

$a = array ( 'w', 'r' );

でいけると思いますが。

http://fol.axisz.jp/php/man/php/function.array.html

Qprint "{$data[$i][$j]}";の $dataと「直接関係」がある

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都のデータを格納します。
$data[3][2] = 19;
$data[4][0] = "福岡";
$data[4][1] = 27;//$data[4][●]に福岡のデータを格納します。
$data[4][2] = 22;

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>都市名</th>
<th>最高気温</th>
<th>最低気温</th>
</tr>

<?php

for($i=0; $i<count($data); $i++){
print "<tr>";
for($j=0; $j<count($data[0]); $j++){
print "<td>{$data[$i][$j]}</td>";//配列の要素を出力する。
}
print "</tr>\n";
}

?>

</table>

</body>
</html>
以上ですが・・・だんだん難しくなってきました!
 さて
  print "<td>{$data[$i][$j]}</td>";の $dataと「直接関係」があるところは
 1) for($j=0; $j<count($data[0]); $j++){  
 2)$data[0][0] = "東京";~$data[4][2] = 22;
  の1)2)のどちらと「直接関係」があるのでしょうか?
 以上よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P185 Sample6-15▸ 多次元配列</title>
</head>
<body>

<?php

$data[0][0] = "東京";
$data[0][1] = 32;//$data[0][●]に東京のデータを格納します。
$data[0][2] = 25;
$data[1][0] = "名古屋";
$data[1][1] = 28;//$data[1][●]に名古屋のデータを格納します。
$data[1][2] = 21;
$data[2][0] = "大阪";
$data[2][1] = 27;//$data[2][●]に大阪のデータを格納します。
$data[2][2] = 20;
$data[3][0] = "京都";
$data[3][1] = 26;//$data[3][●]に京都の...続きを読む

Aベストアンサー

> の1)2)のどちらと「直接関係」があるのでしょうか?

No.1さんと同じく質問の意味が理解できません。
わかり易く補足いただいた方が良いかと思います。



”の1)2)のどちらと「関係」があるのでしょうか?” というご質問であれば

”どちらとも関係あります” という回答になります。

Q@$a = $b["c"] or $a = "text"; という記述の仕方

これは $a = b["c"] がエラーだったら$aに"text"を代入できるので楽なんですが、
あまり使わない方がいい構文なのでしょうか?

配列の存在チェックをしていて
if(isset($b["c"])){
$a = $b["c"];
}else{
$a = "text";
}
こちらの方がいいのでしょうか?
or の使い方が検索してもイマイチ分からないのです

@はエラーが発生しているのに、それを表示しない方法だと認識しています
だからエラーを出さないのが正しい記述なのであれば、後者が正しいのかと思ったり
1行で収まる上に、一応構文として理解も難しくないので問題ないのかなと思ったり

タイトルの記述方法が不適切なのかどうかと、orの適切な使い方、@はあまり使わない方がいいのかを教えてください
本やネットで検索してみたのですが、どうしてもヒットしません
検索で分かるのでしたら、どのような検索の仕方がいいか教えてください!
お願いします。

Aベストアンサー

@$a = $b["c"] or $a = "text";

if(isset($b["c"])){
$a = $b["c"];
}else{
$a = "text";
}
では$b["c"] = 0の時の動作が違いますね
上の式と同じにするなら
if(isset($b["c"]) and $b["c"]){
または
if(!empty($b["c"])){
になると思います
@は自分も関数の頭に使うことはたまにあります。使わない方がいいとは思いません。

@がないと$b["c"]が未定義の場合にNoticeエラーとなります。

Q$ka = $_REQUEST[\"FFF\"];が変数に代入できなくて困ってます┐(´~`;)┌

今任意の名前でファイルを生成するPHPを作っています。ファイルの中身に$ka = $_REQUEST[\"FFF\"];というコードをファイル作成時に書き込みたいんですが、どうも変数 $HTMLにうまく代入されてくれません。もし、どこが問題なのかわかる方どなたかいらっしゃいましたらアドバイスお願いしますΣo(≧~≦)o。


下にコードを書いておきます。


<form name="form" action="A.php" method="POST">
HTMLファイルの名前
<input name="DAI" type="text">
<input type="submit" value="作成">
</form>
<?php
$DAI = $_REQUEST["DAI"];
?>





<!-- 【この下のコード$ka = $_REQUEST[\"FFF\"];がうまく変数$HTMLに代入されません】 -->
<? $HTML="$ka = $_REQUEST[\"FFF\"];" ?>





<?php
$fp = fopen("$DAI.php","a");
fputs($fp,$HTML);
fclose($fp);
echo "ファイル作成成功!";
?>
<?
print"$DAIが作成されました";
?>
<?
print"<A href=\"http://localhost/$DAI.php\">作成された貴方のファイルへのリンク</A>";
?>

今任意の名前でファイルを生成するPHPを作っています。ファイルの中身に$ka = $_REQUEST[\"FFF\"];というコードをファイル作成時に書き込みたいんですが、どうも変数 $HTMLにうまく代入されてくれません。もし、どこが問題なのかわかる方どなたかいらっしゃいましたらアドバイスお願いしますΣo(≧~≦)o。


下にコードを書いておきます。


<form name="form" action="A.php" method="POST">
HTMLファイルの名前
<input name="DAI" type="text">
<input type="submit" value="作成">
</form>
<?p...続きを読む

Aベストアンサー

<? $HTML='$ka = $_REQUEST["FFF"];' ?>
こういうことでしょうか?

シングルクォートは変数を評価しません。

Q$this->pets[$i]->report();の意味がわかりません

$this->pets[$i]->report();の記述が出てきてわかりません。
いったい何をしているのか良くわかりません。
ご教示よろしくお願い致します。

Aベストアンサー

配列の中にオブジェクト(クラスを実体化したもの)があり、そのオブジェクトのメソッドを参照しています。
$this->pets = new Pet(); ←こんな記述無いですか?

そのソースの前後がわからないと、まったく意味がわからないので補足お願いします!


人気Q&Aランキング

おすすめ情報