
idとnameとcountとその他のいろいろな要素を持つ連想配列entryがあります。
entry
id name count …
-------------
1 satou 35
2 satou 49
3 sio 18
4 sio 29
5 sio 39
6 sio 40
7 miso 28
:
--------------
データベースの操作で同じidのcountのみを更新したいため、このentryから、「nameが同じで、countが最大のものを抽出した3次元の連想配列entry2」を作成したいです。
entry2
id name count
-------------
2 satou 49
6 sio 40
7 miso 28
:
--------------
このような働きをするphpのコードを教えてください。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
またもやご回答、本当にありがとうございます。
うーん…どう考えても私の環境が壊れていますよね……
もう一度、環境そのものを再構築してみます。
何度もご解答していただき、本当に助かりました。
心より感謝の言葉を申し上げます。ありがとうございました。
No.3
- 回答日時:
> array_push($r.array_combine
ドットでなくカンマですね。
詳しくは、array_pushのリファレンスをご覧ください。
ドットではなくカンマでしたか。大変申し訳ありません。
その部分を訂正しましたが、やはり
Parse error: syntax error, unexpected $end in C:\xampplite\htdocs\test.php on line 19
と出てきました。
知らない関数を調べつつ、,と.、:と;などの打ち間違いが原因かと思いフォントを大きくしてコードを調べてみましたが、構文エラーの原因はやはりわかりませんでした。
実行環境は
###### Apache Friends XAMPP Lite (Basis Package) version 1.7.3 ######
+ Apache 2.2.14 (IPV6 enabled)
+ MySQL 5.1.41 (Community Server) with PBXT engine 1.0.09-rc
+ PHP 5.3.1 (PEAR)
+ Miniperl 5.10.1
+ XAMPP Control Version 2.5.8 (ApacheFriends Edition)
+ XAMPP CLI Bundle 1.6
+ XAMPP Port Check 1.5
+ XAMPP Security 1.1
+ SQLite 2.8.17
+ SQLite 3.6.20
+ OpenSSL 0.9.8l
+ phpMyAdmin 3.2.4
+ msmtp 1.4.19 (a sendmail compatible SMTP client)
+ Webalizer 2.21-02 (with GeoIP lite)
+ Ming 0.4.3 for PHP
+ PDF with pdflib lite v7.0.4p4 for PHP
で、訂正したPHPは
----
<?php
$id=array(1,2,3,4,5,6,7);
$name=array('satou','satou','sio','sio','sio','sio','miso');
$count=array(35,49,18,29,39,40,28);
$entry=array('id' =>$id,'name' =>$name,'count' =>$count);
$result=array(); foreach(array2recordset( $entry ) as $value){
$vname = $value[ 'name' ];
if ( isset ($result[$vname]))
if($result[$vname]['count'] >=$value['count']) continue;
$result [$vname] =$value;
}
foreach ($result as $e ){ ?><?= implode(' ',$e) ?>
<? } function array2recordset( $param_array ){
$karr = array_keys($param_array);
$varr = array_values($param_array);
$r=array(); while( count( $varr[0] ) > 0 )
array_push($r,array_combine($karr, array_map('array_shift',&$varr ) ) );
return $r; } ?>
になります。
他に原因があれば、どのようなものでしょうか。
どうかよろしくお願いします。
No.2
- 回答日時:
こんなんとか。
『「nameが同じで、countが最大のものを抽出した3次元の連想配列entry2」を作成したいです』については、未対応。適宜、変形すればよいかなということで。

再度のご回答、本当にありがとうございます。
まずは教えていただいたコードを使用してみようと忠実に打って実行したところ、
Parse error: syntax error, unexpected $end in C:\xampplite\htdocs\test.php on line 19
と19行目でエラーが出ます。
コードの打ち間違いかと思い、何度も見直したのですが結局わかりませんでした。
原因が知りたいです。どうかよろしくお願いします。
---
<?php
$id=array(1,2,3,4,5,6,7);
$name=array('satou','satou','sio','sio','sio','sio','miso');
$count=array(35,49,18,29,39,40,28);
$entry=array('id' =>$id,'name' =>$name,'count' =>$count);
$result=array(); foreach(array2recordset( $entry ) as $value){
$vname = $value[ 'name' ];
if ( isset ($result[$vname]))
if($result[$vname]['count'] >=$value['count']) continue;
$result [$vname] =$value;
}
foreach ($result as $e ){ ?><?= implode(' ',$e) ?>
<? } function array2recordset( $param_array ){
$karr = array_keys($param_array);
$varr = array_values($param_array);
$r=array(); while( count( $varr[0] ) > 0 )
array_push($r.array_combine($karr, array_map('array_shift',&$varr ) ) );
return $r; } ?>
No.1
- 回答日時:
こんなのとか。
なんのひねりもないですが。
ご回答ありがとうございます。大変参考になりました。
しかし、自分でも作ってみたのですが、シンタックスエラーになってしまいます。
真ん中のforeach文が原因かな、などと自分でも原因を考えて見たのですが、結局どういう風にいじってみても原因がわかりません。
どのようにしたら修正できるのか、よろしければご教示ください。
どうかよろしくお願いします。
<?php
$id=array(1,2,3,4,5,6,7);
$name=array("satou","satou","sio","sio","sio","sio","miso");
$count=array(35,49,18,29,39,40,28);
$entry=array("id" =>$id,"name" =>$name,"count" =>$count);
$result=array();//entry2…わかりにくいので結果の格納はresultにします。
foreach($entry as $value){
if ( isset ( $result[$value["name"]] ) ){
if( $result[ $value["name"] ]["count"] >=$value["count"] ){
$result[ $value["name"] ] =$value ;
}
}
foreach($result as $entry){
echo implode(" ",$entry)."\n";
}
?>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
scanfでの読み込み文字数制限
-
ファイル名を変更してアップロ...
-
プルダウンリンクを外部ファイ...
-
フォームボタンを押すたびに数...
-
リンク先のフォームに自動的に...
-
PHP プルダウンメニュー MYSQL
-
フォーム送信後の更新ボタンで...
-
セレクトしたときに全て初期状...
-
コンボボックス(プルダウン)...
-
ドロップダウン、ラジオボタン...
-
奇数や偶数を調べる関数
-
選択されたプルダウンの値を変...
-
セッションを使わずに遷移先画...
-
同じページでフォームデータを...
-
2つのプルダウンメニュから受け...
-
htmlファイルからphpファイルへ...
-
PHPの質問:フォームから受け取...
-
wordpress環境でのお問い合わせ...
-
PHPでファイルアップロード時に...
-
フォーム INPUTの文字化け対策...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php+mysqlでの重複チェックにつ...
-
Flaskでサーバー立ち上げに関して
-
POSTの項目に追加
-
重複を防ぐ記述について教えて...
-
複数条件での検索について教え...
-
アップロードファイル名の文字化け
-
サブフォルダ内の全てのテキス...
-
php、sqlite3にデーター追加で...
-
phpで変数を使ってcopyできない
-
配列について教えて下さい。
-
$_SESSIONに渡した後はそのまま...
-
phpで掲示板を作りたい
-
JSONデータ登録について
-
$_REQUESTの意味を教えて下さい
-
空文字
-
PHP等を用いて在庫数を表示・管...
-
Fortranでのファイル名操作につ...
-
VBA で、スペースを含むファイ...
-
header()関数について
-
PHPでParse errorについて
おすすめ情報