【问题标题】:Convert the first element of an array to a string in PHP在 PHP 中将数组的第一个元素转换为字符串
【发布时间】:2011-09-09 20:52:36
【问题描述】:

我有一个 PHP 数组,想将其转换为字符串。

我知道我可以使用joinimplode,但在我的情况下,数组只有一项。为什么我必须在只有一项的数组中使用组合值?

这个数组是我的 PHP 函数的输出,它返回一个数组:

Array(18 => 'Something');

如何将其转换为字符串?

【问题讨论】:

  • 视情况而定。给定上面的数组,你想要什么作为结果字符串?

标签: php arrays string object


【解决方案1】:

有没有其他方法可以将该数组转换为字符串?

您不想将数组转换为字符串,如果我没看错的话,您想获取数组唯一元素的值。

<?php
  $foo = array( 18 => 'Something' );
  $value = array_shift( $foo );
  echo $value; // 'Something'.

?>

使用 array_shift 您不必担心索引。

编辑:请注意,array_shift 不是唯一会返回单个值的函数。 array_pop()、current()、end()、reset(),它们都会返回一个元素。所有发布的解决方案都有效。不过,使用数组移位,您可以确保您只会获得数组的 first 值,即使有多个数组也是如此。

【讨论】:

  • 使用this code 运行这两个函数一百万次。 array_shift 是 1.81 秒,reset 是 1.71 秒。这几乎意味着每次调用重置大约快 0.0000001 秒。很抱歉,如果您担心这一点,那么您是有史以来最高效的程序员。 ;)
  • 使用最有效的方法来实现你的目标并没有错,但我发现 array_shift 更能描述目标,所以我使用它。 reset( ) 在性能上略微更好,但它不能很好地传达它的目标,所以我选择了 array_shift。这不是矫枉过正,这是一个明智的选择。微笑。
  • resetarray_shift 之间有一个主要区别。 array_shift 将从数组中删除第一个元素并保持内部指针不变,而 reset 保留数组但重置内部指针。
【解决方案2】:

还有其他方法可以转换吗 数组转换成字符串?

是的,有。 serialize()。它可以将各种数据类型(包括对象和数组)转换为字符串表示形式,您以后可以unserialize()。序列化一个关联数组,例如 Array(18 =&gt; 'Somthing') 将保留键和值:

<?php
$a = array(18 => 'Something');
echo serialize($a);                                   // a:1:{i:18;s:9:"Something";}
var_dump(unserialize('a:1:{i:18;s:9:"Something";}')); // array(1) {
                                                      //   [18]=>
                                                      //   string(9) "Something"
                                                      // }

【讨论】:

    【解决方案3】:

    将数组创建为 PHP 字符串数组的一种简单方法是:

    <?PHP
        $array = array("firstname"=>"John", "lastname"=>"doe");
        $json = json_encode($array);
        $phpStringArray = str_replace(array("{", "}", ":"), 
                                      array("array(", "}", "=>"), $json);
        echo phpStringArray;
    ?>
    

    【讨论】:

    • 如果{}: 嵌入在字符串文字中,代码将无法正常工作。你需要一个合适的解析器。
    • 这个答案对我帮助最大。谢谢斯文。
    • 虽然我有点晚了:这似乎不是最好的解决方案。如果您想这样做,只需致电var_export($array, true);,它的效果几乎相同,但效果更好。
    【解决方案4】:

    你可以使用reset()函数,它会返回第一个数组成员。

    【讨论】:

    • 它还会将数组的内部指针倒回第一个成员。
    • @binaryLV 他说数组只有一个成员,所以我认为不会有问题。
    • 是的,这只是一个补充 - 以防他将 reset() 与其他数组一起使用。
    【解决方案5】:

    implodejoin(它们是完全相同的东西)在这里可以工作。或者,您可以直接调用 array_pop 并获取数组中唯一元素的值。

    【讨论】:

      【解决方案6】:

      如果您的目标是将数组输出到字符串以进行调试:您可以使用print_r() 函数,该函数接收表达式参数(您的数组)和可选的布尔返回参数。通常该函数用于回显数组,但如果将返回参数设置为true,它将返回数组印象。

      例子:

          //We create a 2-dimension Array as an example
          $ProductsArray = array();
      
          $row_array['Qty'] = 20;
          $row_array['Product'] = "Cars";
      
          array_push($ProductsArray,$row_array);
      
          $row_array2['Qty'] = 30;
          $row_array2['Product'] = "Wheels";
      
          array_push($ProductsArray,$row_array2);
      
          //We save the Array impression into a variable using the print_r function
          $ArrayString = print_r($ProductsArray, 1);
      
          //You can echo the string
          echo $ArrayString;
      
          //or Log the string into a Log file
          $date = date("Y-m-d H:i:s", time());
          $LogFile = "Log.txt";
          $fh = fopen($LogFile, 'a') or die("can't open file");
          $stringData = "--".$date."\n".$ArrayString."\n";
          fwrite($fh, $stringData);
          fclose($fh);
      

      这将是输出:

      Array
      (
          [0] => Array
              (
                  [Qty] => 20
                  [Product] => Cars
              )
      
          [1] => Array
              (
                  [Qty] => 30
                  [Product] => Wheels
              )
      
      )
      

      【讨论】:

        【解决方案7】:

        您可以使用 print_r 和 html 将其解释为带有换行符的字符串,如下所示:

        $arraystring = print_r($your_array, true); 
        
        $arraystring = '<pre>'.print_r($your_array, true).'</pre>';
        

        或者,如果你这样做,你可以混合许多数组和变量

        ob_start();
        print_r($var1);
        print_r($arr1);
        echo "blah blah";
        print_r($var2);
        print_r($var1);
        $your_string_var = ob_get_clean();
        

        【讨论】:

          【解决方案8】:

          For() 循环非常有用。您可以将数组的值添加到另一个变量,如下所示:

          <?php
              $dizi=array('mother','father','child'); //This is array
          
              $sayi=count($dizi);
              for ($i=0; $i<$sayi; $i++) {
                  $dizin.=("'$dizi[$i]',"); //Now it is string...
              }
                   echo substr($dizin,0,-1); //Write it like string :D
          ?>
          

          在这段代码中,我们将 $dizi 的值和逗号添加到 $dizin:

          $dizin.=("'$dizi[$i]',");

          现在

          $dizin = 'mother', 'father', 'child',
          

          它是一个字符串,但它有一个额外的逗号:)

          然后我们删除了最后一个逗号substr($dizin, 0, -1);

          输出:

          '母亲','父亲','孩子'

          【讨论】:

          • 在这里,您正在编写一个基本上是人类可读的文本而不是数据库函数的答案。有一个自动评估答案的过程,而您的答案被标记为低质量。我想这是因为它似乎缺乏解释。
          • 我现在添加了解释:)
          【解决方案9】:

          由于只有在导出数组时才会出现空格问题,所以您可以将原始的 var_export() 用于所有其他变量类型。这个函数完成了这项工作,并且从外部看,它的工作原理与 var_export() 相同。

          <?php
          
          function var_export_min($var, $return = false) {
              if (is_array($var)) {
                  $toImplode = array();
                  foreach ($var as $key => $value) {
                      $toImplode[] = var_export($key, true).'=>'.var_export_min($value, true);
                  }
                  $code = 'array('.implode(',', $toImplode).')';
                  if ($return) return $code;
                  else echo $code;
              } else {
                  return var_export($var, $return);
              }
          }
          
          ?>
          

          http://www.php.net/manual/en/function.var-export.php#54440

          【讨论】:

            【解决方案10】:

            在 PHP 中将数组转换为字符串:

            1. 像这样使用 PHP join 函数:

              $my_array = array(4, 1, 8);
              
              print_r($my_array);
              Array
              (
                  [0] => 4
                  [1] => 1
                  [2] => 8
              )
              
              $result_string = join(',', $my_array);
              echo $result_string;
              

              将数组中的项目用逗号分隔成字符串:

              4,1,8
              
            2. 或者像这样使用 PHP implode 函数:

              $my_array = array(4, 1, 8);
              echo implode($my_array);
              

              哪些打印:

              418
              
            3. 如果您在 PHP 数组中加入或内爆键值对会发生以下情况

              php> $keyvalues = array();
              
              php> $keyvalues['foo'] = "bar";
              
              php> $keyvalues['pyramid'] = "power";
              
              php> print_r($keyvalues);
              Array
              (
                  [foo] => bar
                  [pyramid] => power
              )
              
              php> echo join(',', $keyvalues);
              bar,power
              php> echo implode($keyvalues);
              barpower
              php>
              

            【讨论】:

              【解决方案11】:

              使用 PHP 中的内置函数,implode(array, separator):

              <?php
                  $ar = array("parth","raja","nikhar");
                  echo implode($ar,"/");
              ?>
              

              结果:parth/raja/nikhar

              【讨论】:

                【解决方案12】:

                在 PHP 中将数组转换为字符串:

                像这样使用 PHP join 函数:

                $my_array = array(4,1,8);
                
                print_r($my_array);
                Array
                (
                    [0] => 4
                    [1] => 1
                    [2] => 8
                )
                
                $result_string = join(',' , $my_array);
                echo $result_string;
                

                将数组中的项目用逗号分隔成字符串:

                4,1,8
                

                【讨论】:

                  【解决方案13】:

                  为了完整和简单起见,以下应该没问题:

                  $str = var_export($array, true);
                  

                  在我的情况下它做得很好,但其他人似乎对空格有问题。在这种情况下,ucefkh 的答案提供了 PHP 手册中注释的解决方法。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-05-31
                    • 2011-01-09
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-02-21
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多