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で質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像が表示出来ません。
-
foreachがうまく動かない
-
ファイル名を変更してアップロ...
-
PHPで入力フォームでデータを確...
-
XMLをツリー形式で表示
-
PHPからデータベースの該当行を...
-
フォームでのリセットを使う方法
-
PHP ボタンが押されたら処理を...
-
フォーム送信後の更新ボタンで...
-
ラジオボタンをsessionで使いたい
-
HTMLで前の画面に戻る時、入力...
-
検索時の選択内容を保持する方法
-
<input type="hidden" >で配列...
-
ラジオボタンを押すと、表示が...
-
【HTML(PHP?)】複数のフォーム...
-
プルダウンとCSVの連動
-
POSTの値を配列として受け取っ...
-
PHPで、ボタンを押すと同じペー...
-
アマゾンのような評価の星を選...
-
フォームへの前回入力値をクリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
ファイル名を変更してアップロ...
-
PHPからHTMLへの変数の受け...
-
$_SESSIONに渡した後はそのまま...
-
テキストボックスの値を取得したい
-
openCVのトラックバーについて
-
scanfでの読み込み文字数制限
-
アップロードファイル名の文字化け
-
PHP MySql 画像を取得
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
UPDATEできない
-
WordのIDataObject::GetData呼...
-
C# 同じ処理をまとめたい
-
POSTの項目に追加
-
イタリア人がCatherineと聞いた...
おすすめ情報