【问题标题】:Cleaning up PHP arrays into one [closed]将PHP数组清理为一个[关闭]
【发布时间】:2012-11-28 18:58:00
【问题描述】:
array(1) {
  [0] => string(18) "AnotherTestSnippet"
}
array(1) {
  [0] => string(17) "Test Code Snippet"
}
array(1) {
  [0] => string(18) "AnotherTestSnippet"
}
array(1) {
  [0] => string(17) "Test Code Snippet"
}

如何使用PHP将上述数组转换成这种格式?

array("AnotherTestSnippet","Test Code Snippet")

这是清理和删除重复项。我试过 array_unique 和 in_array 但它不起作用。谢谢。

【问题讨论】:

  • @RhoHappy 您正在链接到 MySQL 问题..
  • 我认为这不是答案,假设上面的结果是 $myvariable 的 var_dump 输出。我将如何操作 $myvariable 数组以便它只输出上述转换和干净的格式?

标签: php arrays


【解决方案1】:

让我们将您的数组称为 $array1 到 $array4。这是解决方案:

$cleanArray = array_unique(array_merge($array1, $array2, $array3, $array4));

编辑:

现在我知道您是从单个多维数组开始的,这不是正确的答案。正确答案是 Dainis Abols 给出的 for 循环。

【讨论】:

  • 是的,但是上面的 var_dump 输出只涉及一个 PHP 数组变量。
  • 谢谢大卫,但我只有一个与上述 var_dump 输出相关的数组变量,我已经尝试过 array_unique(array_merge($myvariable))。它确实达到了所需的转换格式。
  • 现在我明白你在问什么了。 @DainisAbols 提供了正确答案。
【解决方案2】:

只需执行一个循环并仅保存您唯一的 enries:

<?php
$array = array (
    array( "AnotherTestSnippet" ),
    array( "Test Code Snippet" ),
    array( "AnotherTestSnippet" ),
    array( "Test Code Snippet" )
);

$new_array = array();

foreach ( $array as $value )
{
    if( !in_array( $value[0], $new_array) ) $new_array[] = $value[0];
}

输出:

Array
(
    [0] => AnotherTestSnippet
    [1] => Test Code Snippet
)

【讨论】:

  • 感谢 Dainis,但它仍然没有得到所需的转换格式。可能是因为它包含几个“数组”字,而不是在你的例子中只有一个。
  • 你可以编辑你的帖子var_export吗?
  • @CodexMeridian 这更像你的数组吗?
  • 是的,这是 var_export 输出:array ( 0 => 'AnotherTestSnippet', )array ( 0 => 'Test Code Snippet', )array ( 0 => 'AnotherTestSnippet', )array ( 0 = > '测试代码片段', )
  • @Dainis,是的,这是我正在工作的脚本中的单个数组变量,我真的很困惑如何从中获得干净的输出..
【解决方案3】:
<?php
$a = array("AnotherTestSnippet"); 
$b = array("Test Code Snippet"); 
$c = array("AnotherTestSnippet"); 
$d = array("Test Code Snippet");

$e = array_unique( array_merge( $a, $b, $c, $d ) ); 
var_dump( $e );

给予:

array(2) {
  [0]=>
  string(18) "AnotherTestSnippet"
  [1]=>
  string(17) "Test Code Snippet"
}

【讨论】:

  • 谢谢蒂姆,但是只涉及需要清理的 PHP 数组变量。
  • 您的 Q 显示了 4 个单独的数组。对于单个数组 array_unique 无需合并即可正常工作。
  • 感谢蒂姆,但 array_unique 仍然不起作用。
  • 因为您的问题结构错误。请张贴您的实际结构的var_export
  • 嗨 Tim,这是 var_export 输出:array ( 0 => 'AnotherTestSnippet', )array ( 0 => 'Test Code Snippet', )array ( 0 => 'AnotherTestSnippet', )array ( 0 => '测试代码片段', )
【解决方案4】:

使用array_uniquearray_merge 的组合。

$cleanArray = array_merge($array1, $array2, ... )
$cleanArray = array_unique($cleanArray);

【讨论】:

  • 感谢 Praveen,但数组变量只有一个。
  • 我不明白你。您能否分享完整的源代码以及您的期望?
【解决方案5】:

使用以下方法在值和键中获取已清理的数组:

$cleanedarray = array_values(array_unique(array_merge($array1, $array2, $array3, $array4)));

【讨论】:

    【解决方案6】:

    请试试这个

    <?php
     $a[]=array ( 0 => 'AnotherTestSnippet', );
     $a[]=array ( 0 => 'Test Code Snippet', );
     $a[]=array ( 0 => 'AnotherTestSnippet', );
     $a[]=array ( 0 => 'Test Code Snippet', );
    
    foreach($a as $key=>$value)
    {
        foreach($value as $key1=>$value1)
        {
            $new_array[]=$value1 ;
    
        }
    
    }
    echo "<pre>";
    print_r($new_array);
    echo "</pre>";
    

    【讨论】:

      【解决方案7】:

      读取您的 cmets var_dump 输出是错误的。您没有四个单独的数组,而是一个包含这些数组的多维数组。

      您可以使用像这样的闭包通过array_walk_recursive 遍历数组:

      $input = array(
          array('AnotherTestSnippet'),
          array('Test Code Snippet'),
          array('AnotherTestSnippet'),
          array('Test Code Snippet')
      );
      
      $result = array();
      array_walk_recursive($input, function($a) use (&$result) {
          $result[] = $a;
      });
      
      $result = array_unique($result);
      var_dump($result);
      

      这呼应了:

      array (size=2)
        0 => string 'AnotherTestSnippet' (length=18)
        1 => string 'Test Code Snippet' (length=17)
      

      【讨论】:

      • 感谢 Acme,但我只有一个数组变量,例如 $myarrayvariable 和上面的 var_dump 输出..我试过 array_merge($myarrayvariable) 但它不起作用..
      • 这是完整的 var_dump 输出吗?
      • 是的,单个 PHP 数组变量的完整 var_dump 输出..我陷入了困境。感谢您的帮助。
      • 你确定你没有遗漏什么吗?这不能是单个变量的输出。单个变量是包含这4个数组作为数组元素的数组吗?
      • 这是单个数组变量的完整 var_dump 输出,之前有人编辑过它:array(1) { [0]=> string(18) "AnotherTestSnippet" } array(1) { [0 ]=> string(17) "测试代码片段" } array(1) { [0]=> string(18) "AnotherTestSnippet" } array(1) { [0]=> string(17) "测试代码片段" }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-10-21
      相关资源
      最近更新 更多