php - 关联数组

标签 php mysql

我需要按照 [id] (oper-%%%%%%%%%%) 在数组 2 中出现的顺序重新排列数组 1,但我不太确定如何接近这个。

数组1

Array ( [0] => Array ( [id] => oper-4c597644-402490ee [amount] => 17498.5 ) [1] => Array ( [id] => oper-4f30019a-27f27473 [amount] => 10383.5 ) [2] => Array ( [id] => oper-4bceffd1-21e0af5b [amount] => 6277 ) [3] => Array ( [id] => oper-4f300d33-de9592e3 [amount] => 11382 ) [4] => Array ( [id] => oper-4c236420-0b11e945 [amount] => 14759 ) [5] => Array ( [id] => oper-50f6e4ad-9effbec7 [amount] => 3058 ) [6] => Array ( [id] => oper-4f05a90b-03b379f9 [amount] => 12112.5 ) [7] => Array ( [id] => oper-qtgjvw8y-1uqtw058 [amount] => 10023 ) [8] => Array ( [id] => oper-52657816-3d6516e2 [amount] => 3495 ) )

数组2

Array ( [0] => Array ( [0] => Bob [1] => oper-4bceffd1-21e0af5b ) [1] => Array ( [0] => Bob [1] => oper-4c236420-0b11e945 ) [2] => Array ( [0] => Bob [1] => oper-4c597644-402490ee ) [3] => Array ( [0] => Bob [1] => oper-4f05a90b-03b379f9 ) [4] => Array ( [0] => Bob [1] => oper-4f30019a-27f27473 ) [5] => Array ( [0] => Bob [1] => oper-4f300d33-de9592e3 ) [6] => Array ( [0] => Bob [1] => oper-50f6e4ad-9effbec7 ) [7] => Array ( [0] => Bob [1] => oper-52657816-3d6516e2 ) [8] => Array ( [0] => Bob [1] => oper-qtgjvw8y-1uqtw058 ) [9] => Array ( [0] => Empty [1] => ) [10] => Array ( [0] => Upg. [1] => ) [11] => Array ( [0] => Ren. [1] => ) )

Bob 只是一个“名字”的例子 这是到目前为止我的代码(我知道这并不干净,因为这不是用 PDO 完成的,我只是想让它在此刻工作):

$result = mysql_query("SELECT * FROM tblOperatorGoals WHERE MonthlyGoal LIKE '$currentDate%'");

while ($row = mysql_fetch_array($result)) {
  $opernameArray[] = $row['OperatorName'];
  $operIDArray[] = $row['OperatorID'];
  $monthlyGoal[] = substr($row['MonthlyGoal'], 8);
  $operArray[] = array('name' => $row['OperatorName'], 'id' => $row['OperatorID']);
}

$result = mysql_query("SELECT * FROM tblUserPayments WHERE ChargeAmount IS NOT NULL AND  PaymentStatus='OK' AND PaymentDate LIKE '$currentDate%'");
while ($row = mysql_fetch_array($result)) {
  $operearnedArray[] = array(
      'amount' => $row['ChargeAmount'], 
      'id' => $row['OperatorID']);
}

foreach ($operearnedArray as $value) {
  if($value['id'] == '' || $value['id'] == null) {
    continue;
  }
  if(array_key_exists($value['id'], $operSums1)) {
    $operSums1[$value['id']] += $value['amount'];
  } else {
    $operSums1[$value['id']] = $value['amount'];
  }
}

foreach ($operSums1 as $id => $value) {
  if (in_array($id,$operIDArray)) {
    $operSums[] = array(
    'id' => $id,
    'amount' => $value);
  }
}

非常感谢任何帮助。关联数组不是我的菜。

基本上我正在寻找一个如下所示的数组:

Array ( [name] => Bob [id] => oper-%%%%%%%%%%%%%% [amount] => $$$$$$$$$$$ )...ect...ect...

最佳答案

粗糙但应该有效:

$toSort = array(
    array ('id' => 'oper-4c597644-402490ee', 'amount' => 17498.5,),
    array ('id' => 'oper-4f30019a-27f27473', 'amount' => 10383.5,),
    array ('id' => 'oper-4bceffd1-21e0af5b', 'amount' => 6277,),
    array ('id' => 'oper-4f300d33-de9592e3', 'amount' => 11382,),
    array ('id' => 'oper-4c236420-0b11e945', 'amount' => 14759,),
    array ('id' => 'oper-50f6e4ad-9effbec7', 'amount' => 3058,),
    array ('id' => 'oper-4f05a90b-03b379f9', 'amount' => 12112.5,),
    array ('id' => 'oper-qtgjvw8y-1uqtw058', 'amount' => 10023,),
    array ('id' => 'oper-52657816-3d6516e2', 'amount' => 3495,),
);

$assigned = array (
    array ('Bob','oper-4bceffd1-21e0af5b'),
    array ('Bob','oper-4c236420-0b11e945'),
    array ('Bob','oper-4c597644-402490ee'),
    array ('Bob','oper-4f05a90b-03b379f9'),
    array ('Bob','oper-4f30019a-27f27473'),
    array ('Bob','oper-4f300d33-de9592e3'),
    array ('Bob','oper-50f6e4ad-9effbec7'),
    array ('Bob','oper-52657816-3d6516e2'),
    array ('Bob','oper-qtgjvw8y-1uqtw058'),
);

$sorted = assignData($toSort, $assigned);

var_dump($sorted);

function assignData($raw, $order)
{
    $returnArray = array();
    foreach($order as $entry):
        foreach($raw as $rawEntry):
            if ($rawEntry['id'] == $entry[1]):
                $temp = array(
                    'name' => $entry[0],
                    'oper' => $rawEntry['id'],
                    'amount' => $rawEntry['amount'],
                );
                $returnArray[] = $temp;
            endif;
        endforeach;
    endforeach;
    return $returnArray;
}

关于php - 关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26665470/

相关文章:

php - 如果一个失败,如何在 PHP 中处理多个 MySQL 操作

MySQL 仅当子表中的记录与另一个子表中的记录匹配时才从父表中选择行

php搜索,根据搜索返回显示php模板

php - 合并列中具有相同字段的多行

php - 防止 Doctrine 1 创建外键约束

mysql - 如何按名称获取大于和小于平均值的计数

php - 如何在不使用 SSL 的情况下保护 POST 方法?

php - 上传文件中的数据

javascript - 将 Javascript 值发送到 MySQL 数据库

java - Hibernate:hbm2ddl 属性值,创建删除总是删除架构,即使没有显式 SessionFactory 关闭?