Php 如何在数组中组合相同的名称及其值

Php 如何在数组中组合相同的名称及其值,php,arrays,Php,Arrays,嗨,我有这样的数组 Array ( [0] => stdClass Object ( [name] => text_input [value] => kalpit ) [1] => stdClass Object ( [name] => wpc_chkbox[] [value] => Option two ) [2] => stdClass O

嗨,我有这样的数组

   Array
(
 [0] => stdClass Object
    (
        [name] => text_input
        [value] => kalpit
    )

  [1] => stdClass Object
    (
        [name] => wpc_chkbox[]
        [value] => Option two
    )

[2] => stdClass Object
    (
        [name] => wpc_chkboxasdf[]
        [value] => Option one
    )

[3] => stdClass Object
    (
        [name] => wpc_chkboxasdf[]
        [value] => Option two
    )

[4] => stdClass Object
    (
        [name] => wpc_inline_chkbox[]
        [value] => 1
    )

[5] => stdClass Object
    (
        [name] => wpc_inline_chkbox[]
        [value] => 2
    )

[6] => stdClass Object
    (
        [name] => wpc_inline_chkbox[]
        [value] => 3
    )

[7] => stdClass Object
    (
        [name] => wpc_radios
        [value] => Option one
    )

 )
现在我的问题是如何在onc place中组合相同的名称值,在上面的数组中,我有wpc\u inline\u复选框[]重复了3次,所以我想这样做。。我可以使用数组_uniqe(),但我需要其他重复索引的值

  [4] => stdClass Object
    (
        [name] => wpc_inline_chkbox[]
        [value] => 1,2,3
    )
有人能帮我解决这个问题吗


提前感谢

对不起,您的案例并不普通,因此您需要手工操作

$properArray = array();
foreach ($originArray as $value) {
    if ( ! isset($properArray[$value['name']])) {
        $properArray[$value['name']] = array(
            'name' = $value['name'],
            'value' = ''
        );
    }
    if (isset($properArray[$value['name']]['value'])) {
         $properArray[$value['name']]['value'] = $properArray[$value['name']]['value'] . ',' .$value['value']; //better to use array in this place
    } else {
         $properArray[$value['name']]['value'] = $value['value']
    }

}

$originArray = array_values($properArray);

这是假定名称/值都是字符串

<?php 

  $objects;    // This is your array
  $sorted = array();  // This is the sorted array

  // Loop over your array
  foreach($objects as $object)
  {
    // Check if object exists in sorted array
    if( array_key_exists($object->name, $sorted) )
    {
      // Object with this name is already in sorted array simply add to it
      $obj = $sorted[$object->name];

      // Update the values
      $obj->value = $obj->value . ',' . $object->value;

    } else {

      // Object is not in the sorted array add it now
      $sorted[$object->name] = $object;
    }
  }

?>

您有一个对象数组。您必须循环并分配它们。差不多

$newArray = [];
foreach ($array as $obj) {
  if (!isset($newArray[$obj->name])) {
    $newArray[$obj->name] = $obj;
  } else {
    $newArray[$obj->name]->value .= ",{$obj->value}";
  }
}
新数组应该如下所示

["wpc_inline_chkbox[]"] => stdClass Object
    (
        [name] => wpc_inline_chkbox[]
        [value] => "1,2,3"
    )
但是您应该将[value]从字符串更改为数组。

###使用此##

$arr=array(
排列(
'姓名'=>'你好'
,“值”=>1
)
,数组(
'姓名'=>'你好'
,“值”=>2
)
,数组(
“名称”=>“hi2”
,“值”=>1
)
,数组(
“名称”=>“hi4”
,“值”=>1
)
,数组(
“名称”=>“hi0”
,“值”=>4
)
,数组(
“名称”=>“hi0”
,“值”=>3
)
,数组(
“名称”=>“hi1”
,“值”=>10
)
);
印刷费($arr);
$arrTracker=array();

对于($i=0;$i Duplicate!!!>。<简单地排序和合并为什么会变得如此混乱,这不是一个普通的问题。因为需要通过另一个值的键来合并数组中的一些值-我认为PHP中没有专门用于处理此问题的函数,因此总结而言,它并不像您想象的那么普通。这是最简单的问题之一,你可以在高中计算机科学课上解决问题。
$arr = array(
        array(
            'name' => 'hi'
            ,'value' => 1
        )
        ,array(
            'name' => 'hi'
        ,'value' => 2
        )
        , array(
            'name' => 'hi2'
        ,'value' => 1
        )
        , array(
            'name' => 'hi4'
        ,'value' => 1
        )
        ,array(
            'name' => 'hi0'
        ,'value' => 4
        )
        , array(
            'name' => 'hi0'
        ,'value' => 3
        )
        , array(
            'name' => 'hi1'
        ,'value' => 10
        )
    );
    print_r($arr);
    $arrTracker = array();
    for ($i=0; $i <sizeof($arr) ;$i++) {
        for($j = $i+1; $j<sizeof($arr);$j++){
            if($arr[$i]['name'] == $arr[$j]['name']){
                $arr[$i]['value'] .= ','.$arr[$j]['value'];
                $arrTracker[$j] = $j;
            }
        }
    }
    // if you want to unset duplicate name and corresponding value, use below forloop, otherwise it's unnecessary
    foreach($arrTracker as $tracker){
        unset($arr[$tracker]);
    }
    $arr = array_values($arr);
    print_r($arr);