dポイントプレゼントキャンペーン実施中!

以下のような乱雑な配列があったとして中身がわからない場合、最後の要素のキーが「12」であることを知るにはどうすればいいでしょうか?
お詳しい方、よろしくお願いいたします。

$myArray = array();
$myArray[2] = '';
$myArray[5] = 'a';
$myArray[9] = NULL;
$myArray[12] = 'z';

A 回答 (5件)

数字の順番にしたいのであれば


sort($myArray);
としてから行えばよいかと。
ただしソート前の順番は失われるので前の順番があとで必要であれば配列をコピーして残しておいたほうがいいですね。
    • good
    • 0
この回答へのお礼

なるほど!
3つの関数を1行で書こうとしましたができないみたいなんでユーザー定義関数にしました。

$maxKey = getMaxKey_fc($myArray);

function getMaxKey_fc($myArray){
ksort($myArray);
$maxKey = array_pop(array_keys($myArray));
return $maxKey;
}

今更ながら気付きましたが、PHPの配列はActionScriptやPerlの配列とは全く違いますね。いやこれは配列なんかじゃない!ハッシュですよね。
そう考えると全ての謎が解けた気がします。ありがとうございました。

お礼日時:2007/06/27 00:56

end($myArray);//最後の要素


echo key($myArray);//のキー

この回答への補足

なるほどと思ったのですが、
$myArray = array();
$myArray[2] = '';
$myArray[5] = 'a';
$myArray[9] = NULL;
$myArray[12] = 'z';
$myArray[1] = 'w';
等とすると結果は「1」となります。やっぱりダメなんでしょうか??

補足日時:2007/06/26 01:21
    • good
    • 0
この回答へのお礼

おお!
配列にはポインターという概念があったのですね。
ポインターを末尾に動かして、その位置を得る。
ん~ なるほどありがとうございました。

お礼日時:2007/06/25 02:45

いろいろな方法があるとは思いますが、例えばこんな感じでしょうか。



<?php
$myArray = array();
$myArray[2] = '';
$myArray[5] = 'a';
$myArray[9] = NULL;
$myArray[12] = 'z';
foreach ($myArray as $key => $value) {
  if (end($myArray) == $value) {
    print "最終要素のキーは" . $key . "です。";
  }
}
?>

(注)インデントのため、全角空白を使っています。

この回答への補足

なるほどと思ったのですが、
$myArray = array();
$myArray[2] = '';
$myArray[5] = 'a';
$myArray[9] = NULL;
$myArray[12] = 'z';
$myArray[1] = 'w';
等とすると結果は「1」となります。やっぱりダメなんでしょうかね

補足日時:2007/06/26 01:22
    • good
    • 0
この回答へのお礼

なるほど…
foreachでキー値を得られることを知りませんでした。
勉強不足に反省…
ありがとうございました。

お礼日時:2007/06/24 14:19

#1ですが追記です。


array_pop($myArraykeys)を行うと、キーだけの配列$myArraykeysから実際に最後の要素が取り除かれるので
$myArraykeys = array_keys($myArray);
で得たキーだけの配列$myArraykeysを他にも利用する場合は注意してください。
array_popを使う前に別名の配列を作成してコピーしておくとか。

この回答への補足

なるほどと思ったのですが、
$myArray = array();
$myArray[2] = '';
$myArray[5] = 'a';
$myArray[9] = NULL;
$myArray[12] = 'z';
$myArray[1] = 'w';
等とすると結果は「1」となります。やっぱりダメなんでしょうか?

補足日時:2007/06/26 01:17
    • good
    • 0
この回答へのお礼

なるほど!
配列自身をいじればわかるというわけですか。
count()じゃわからないしどうしようかと悩んでました。
簡単な方法があって助かりました。
ありがとうございました。

お礼日時:2007/06/24 14:12

//キーだけを抜き出して配列にする


$myArraykeys = array_keys($myArray);
//最後の要素を抜き出す
$lastkey = array_pop($myArraykeys);

こんな方法でどうでしょうか。
    • good
    • 0

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