ホームページ > バックエンド開発 > PHPチュートリアル > 初心者は配列について質問があります。よろしくお願いします。

初心者は配列について質問があります。よろしくお願いします。

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 13:34:49
オリジナル
950 人が閲覧しました

配列に関する初歩的な質問です。アルゴリズムを教えてください。ありがとうございます
$arrItem = array(
Array ('code'=>10000,'name'=>'China' 、's'=>1)、
配列 ('コード'=>30000、'名前'=>'フランス'、's'=>50)、
配列 ('コード' = >30000,'name'=>'フランス','s'=>100),
Array ('code'=>10000,'name'=>'中国','s' = >3)、
配列 ('code'=>20000、'name'=>'米国'、's'=>2)、
配列 ('code'=> 30000, 'name'=>'France','s'=>5)
);



は元々上記の配列なので、取得したいのは次のとおりです:
$arr = array (
Array ('code'=>10000,'name'=>'中国'),
Array ('code'=>20000,'name'=>' United States'),
Array ('code'=>30000,'name'=>'France')
);

現在混乱しているので、次の情報を提供してください。解決策、ありがとう!

-----解決策---------

PHP コード

[work@cq01-client-test03.vm.baidu.com htdocs]$ php test.php
<?php

/*関数名は大文字と小文字が区別されません*/

$arrItem = 配列(
        配列 ('コード'=>10000、'名前'=>'中国'、'=>1)、
        配列 ('コード'=>30000、'名前'=>'フランス'、'=>50)、
        配列 ('コード'=>30000、'名前'=>'フランス'、'=>100)、
        配列 ('コード'=>10000、'名前'=>'中国'、'=>3)、
        配列 ('コード'=>20000、'名前'=>'米国'、'=>2)、
        配列 ('コード'=>30000、'名前'=>'フランス'、'=>5)
);

foreach ($arrItem として &$elem) {
        unset($elem['s']);
}

print_r($arrItem);

?>
<br /><font color='#e78608'>------解決策---------</font><br /><dl class='code'>PHP コード<pre class="brush:php;toolbar:false">
$arrItem = 配列(
配列 ('コード'=>10000,'名前'=>'中国','=>1)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>50)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>100)、
配列 ('コード'=>10000、'名前'=>'中国'、'=>3)、
配列 ('コード'=>20000、'名前'=>'米国'、'=>2)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>5)
);

//最初に 2 次元配列の最後の要素を削除します
for($i = 0; $i <count($arrItem); $i ++) array_pop($arrItem[$i]);

echo '<pre class="brush:php;toolbar:false">';
//重複した要素を削除
$ar_tmp = 配列();
foreach($arrItem as $v) $ar_tmp[] = implode(',', $v);
$ar_tmp = array_unique($ar_tmp);

$result = 配列();
foreach($ar_tmp as $v) $result[] =explode(',', $v);

print_r($result);
<br><font color="#e78608">------解決策---------</font><br>
ログイン後にコピー
話し合う

1. 最初の繰り返し部分を取り出します
2. s 部分を削除します

------解決策---------
PHP コード
//6階のコードが間違っています。キー名が予約されていません。変更してください。
$arrItem = 配列(
配列 ('コード'=>10000,'名前'=>'中国','=>1)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>50)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>100)、
配列 ('コード'=>10000、'名前'=>'中国'、'=>3)、
配列 ('コード'=>20000、'名前'=>'米国'、'=>2)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>5)
);

関数 ar_unique($ar) {
    $result = 配列();
    for($i = 0; $i <count array_pop foreach as if echo print_r> 配列
        (
            [コード] => 10000
            [名前] =>
        )

    [1] => 配列
        (
            [コード] => 30000
            [名前] =>
        )

    [2] => 配列
        (
            [コード] => 20000
            [名前] =>
        )

)
*/
<br><font color="#e78608">------解決策------------------</font><br>一度だけ機能する関数を作成しましょう<dl class="code">PHP コード<pre class="brush:php;toolbar:false">
$arrItem = 配列(
配列 ('コード'=>10000,'名前'=>'中国','=>1)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>50)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>100)、
配列 ('コード'=>10000、'名前'=>'中国'、'=>3)、
配列 ('コード'=>20000、'名前'=>'米国'、'=>2)、
配列 ('コード'=>30000、'名前'=>'フランス'、'=>5)
);

print_r(array_group($arrItem, 'name', 'code,name'));

関数 array_group($ar, $k, $fields='*') {
  if(! is_array(current($ar))) return $ar // 1 次元配列の場合は元の配列を返します。
  if(! is_array($fields)) {
    if($fields == '*') $fields = array_keys(current($ar));
    それ以外の場合 $fields =explode(',', $fields);
  }
  foreach($ar as $row) {
    $t = 配列();
    foreach($fields as $p) $t[$p] = $row[$p];
    $res[$row[$k]] = $t;
  }
  配列値($res)を返します;
}
 <div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート