はじめまして。
PHPの配列で悩んでいます。詳細は下記の通りです。

array {
[0]=>
array {
["name"]=>"田中一郎"
["price"]=>4000
}
[1]=>
array {
["name"]=>"高橋太郎"
["price"]=>5000
}
[2]=>
array {
["name"]=>"田中一郎"
["price"]=>5000
}
}
上記のような配列があった場合、["name"]でグループ化し、
["price"]の合計を出したいのです。
下記のような配列にしたいのです。
array {
[0]=>
array {
["name"]=>"田中一郎"
["price"]=>9000
}
[1]=>
array {
["name"]=>"高橋太郎"
["price"]=>5000
}
}
上記のように、「田中一郎」をグループ化し、グループ化した合計の配列化したいのですが、何かよい方法等ありますでしょうか?

申し訳ありませんが、ご教授よろしくお願いします

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

A 回答 (1件)

foreach( $ary as $key => $value ) {


  $new_ary[$value['name']] += $value['price'];
}

これでいかがですか?
    • good
    • 0
この回答へのお礼

大変遅くなりましたが、無事解決できました。
本当にありがとうございました!

お礼日時:2009/06/15 23:38

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

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

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[0];[1];ですが、配列の要素か添え字に該当する部分の[0]と[1]ですが

以下のプログラムで教えていただけないでしょうか
<!DOCTYPE html>
<html><head>
<title>P222 Sample7-7 小計を求める関数</title>
</head><body><?php
$product = array(array(100,5),array(20,16),array(25,40));
?>
<table border="2">
<tr bgcolor="#AAAAAA">
<th>単価</th>
<th>個数</th>
<th>小計</th>
</tr>
<?php
for($i=0; $i<3; $i++){
$p = $product[$i][0];
$n = $product[$i][1];
$t = total($p, $n);
print "<tr><td>{$p}円</td><td>{$n}個</td><td>{$t}円</td></tr>\n";
}
function total($pr,$n)
{
return $pr*$n;
}
?>
</table></body></html>
-------------------------------------------------------------------------------------------
以上ですが、
for($i=0; $i<3; $i++){
$p = $product[$i][0];
$n = $product[$i][1];
 の部分の[0];[1];ですが、配列の”要素”か”添え字”に該当する部分の[0]と[1]ですが
 どんな働きがあるのでしょうか?
 以上よろしくお願いいたします。

以下のプログラムで教えていただけないでしょうか
<!DOCTYPE html>
<html><head>
<title>P222 Sample7-7 小計を求める関数</title>
</head><body><?php
$product = array(array(100,5),array(20,16),array(25,40));
?>
<table border="2">
<tr bgcolor="#AAAAAA">
<th>単価</th>
<th>個数</th>
<th>小計</th>
</tr>
<?php
for($i=0; $i<3; $i++){
$p = $product[$i][0];
$n = $product[$i][1];
$t = total($p, $n);
print "<tr><td>{$p}円</td><td>{$n}個</td><td>{$t}円</td></tr>\n";
}
...続きを読む

Aベストアンサー

> $product = array(array(100,5),array(20,16),array(25,40));
これは、視覚的に表すと、以下のようなことです。

$product
 [0]
  [0] ⇒ 100
  [1] ⇒ 5
 [1]
  [0] ⇒ 20
  [1] ⇒ 16
 [2]
  [0] ⇒ 25
  [1] ⇒ 40

二次元配列なので、添字は2つ指定して、初めて目的の値を得ることができます。
[0]、[1]という指定は、おまじないでもなんでもなく、目的の値を得るための添字になります。

つまり、
$product[0][0]は100
$product[0][1]は5
$product[1][0]は20
$product[1][1]は16
$product[2][0]は25
$product[2][1]は40
ということになります。

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

Q$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)は?

phpのバージョンは、5.1.6で、OSのバージョンはCentOS4.4です。

お聞きしたいのですが、
$_SERVER["HTTP_HOST"]と$_SERVER["SERVER_NAME"]の違い(というか意味合い)はなんでしょうか?

phpinfoでみても、同じの場合したことがみたことがないもので。

ご存じの方いらっしゃいましたら、お教えいただければ幸いです。

よろしくお願いいたします。

Aベストアンサー

$_SERVERはサーバーの環境変数やPHPの情報を保存した配列です。
$_SERVERのうち、環境変数はgetenv()でも取得できます。

$_SERVER["SERVER_NAME"]で取得できる名前は
Apacheの場合はhttpd.confで、
UseCanonicalNameがOnになっているときに、ServerNameで指定された値が使われます。
UseCanonicalNameがOffになっていると、ドメイン名やIPアドレスになります。
UseCanonicalNameがOffになっていて、http://127.0.0.1:8001/のようにポート指定でアクセスした場合は、ポート番号は除かれます。

HTTP_HOSTはHTTPでアクセスしたときのホスト名、つまりドメイン名+ポート番号がそれに当たります。
(厳密には違うかも知れませんが、、、)
http://www.ietf.org/rfc/rfc2616.txt

VirtualHostを使ってポート指定でアクセスすると違いが出ますが、
デフォルトでUseCanonicalNameはOffになっていますし、ホスティングサービスではOnにする理由もありません。
http://httpd.apache.org/docs/2.0/ja/mod/core.html#usecanonicalname
(「これが有用な場合の例は、」の段落参照。主にイントラネット向け?)

、、、と書くのはいいとして、私自身、UseCanonicalNameやホスト名の意味や使い方をわかっていません。
こうすれば違いが出るということだけですが、
ご参考まで。

$_SERVERはサーバーの環境変数やPHPの情報を保存した配列です。
$_SERVERのうち、環境変数はgetenv()でも取得できます。

$_SERVER["SERVER_NAME"]で取得できる名前は
Apacheの場合はhttpd.confで、
UseCanonicalNameがOnになっているときに、ServerNameで指定された値が使われます。
UseCanonicalNameがOffになっていると、ドメイン名やIPアドレスになります。
UseCanonicalNameがOffになっていて、http://127.0.0.1:8001/のようにポート指定でアクセスした場合は、ポート番号は除かれます。

HTTP_HOST...続きを読む

Qforeach($stock as $name => $value){ の$value)で値用の変数

<!DOCTYPE html>
<html>
<head>
<title>P161 Sample6-7 array()を使う</title>
</head>
<body>

<?php

$stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>番号</th>
<th>個数</th>
</tr>

<?php

foreach($stock as $name => $value){
print "<tr><td>{$name}</td><td>{$value}個</td></tr>\n";
}

?>

</table>

</body>
</html>
以上の foreach($stock as $name => $value){ 
 のforeach文は特殊な繰り返し文で$stockは”変数名”・$name"はキー(引出し)用の変数・
 ここまでは何となく意味がわかります。最後のは$valueは”値用の変数”・・とあります。
 ここで言う、”値用の変数”の値とは何のことなのでしょうか? 
 よろしくお願いいたします。

<!DOCTYPE html>
<html>
<head>
<title>P161 Sample6-7 array()を使う</title>
</head>
<body>

<?php

$stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

?>

<table border="2">
<tr bgcolor="#AAAAAA">
<th>番号</th>
<th>個数</th>
</tr>

<?php

foreach($stock as $name => $value){
print "<tr><td>{$name}</td><td>{$value}個</td></tr>\n";
}

?>

</table>

</body>
</html>
以上の foreach($stock as $name => $value){ 
 のfor...続きを読む

Aベストアンサー

$name には、"みかん"、"いちご" など。$valueには、80や60が入ります。

> $stock = array("みかん"=>80,"いちご"=>60,"りんご"=>22, "もも"=>50,"くり"=>57);

の => という記号と対応しているでしょ?


人気Q&Aランキング

おすすめ情報