私は今、PHPを使ってサイトを作っているのですが、サイトを利用した人に観覧履歴が追加出来たらなと思い、Cookieを利用して構築を試みようとしています。観覧したら、Cookieの配列に値を追加していき、Cookieの配列に空きがなくなれば、古い要素の配列から消去し、要素0に履歴を追加するコードを組みました。}?>上記のようなコードを書きました。{7,1,2,3,4}となってしまい、ソートがされません。{7,6,0,1,2}とソートしたいです。Yosemiteです。データ...]からドメインで検索して、Cookieの確認を行っています。ご回答よろしくお願いします。4年前phpはよく知りませんが。見ればsetcookieを実行することで反映できていることが分かるはず。$history_id[$j-1]);とやればいいのでは。駄目でしたらすみません。4年前ありがとうございます。ソートの問題は解決しました。}上記のようにコードを変更し、キュー構造にしてcookieを格納することにしました。今のコードのままだと、問題点があり、$idは同じ値でも重複して登録してしまいます。{2,1,0,1,2}となってしまいます。array_filterで対象以外を残すcountで要素数調べて5以上だったら5未満になるようにarray_shift対象をarray_pushで済ますのですが,これだと要求を満たさないのでcountが5以上の時はarray_popしてarray_unshiftになるのでしょうか。オフトピックこれだと履歴としておかしい気はしますが......。HDDさんが書かれている$historyの中身の「0」は最初の閲覧なので,本来なら履歴「6」が来たときに最初に履歴から消えると思うのですが,HDDさんが書かれているのは履歴の中で最新の「4」を削除する,となっています。,「6」が履歴の末尾まで来たあとに別の履歴が追加されると,恐らく「6」が消えるのでしょう。普通のローテーションではない履歴管理なので,不思議です。入れる配列の中をforループを回してこれから入れる数値と同じ数値がないか探します。あればその数値を配列から消して末尾にこれから入れる数値を追加って具合で大丈夫です。4年前2人方の意見を参考にして以下のようなコードを書きました。}しかし、//array_searchで配列の中に$idと同じ値があったら//array_uniqueで重複している値を取り除く//array_valuesで添字を振りなおすを追加したのですができていません。同じ値が重複して入ってしまいます。あと、指摘の通り、履歴としてはおかしいと思われたかもしれませんが、No:3のコードでそれは修正してあります。TRUE){//追加[/quote][url=http://php.net/manual/ja/function.array-search.php#refsect1-function.array-search-returnvalues]array_search[/url]のヘルプの返り値欄をちゃんと読みましょう。array_searchは見つかったらTRUEを返すような設計になっていません。見つかればその添字を,見つからなかったらFALSEを,それぞれ返します。見つかる時のみifの中を実行します。そもそも,見つかろうが見つかるまいが,[url=http://php.net/manual/ja/function.array-unique.php]array_unique[/url]を実行すれば一意になるのですから,array_searchを呼び出す必要はないです。ミクプラは自由にリンクできます。