Подтвердить что ты не робот

Преобразование первого элемента массива в строку в PHP

У меня есть массив PHP и вы хотите преобразовать его в строку.

Я знаю, что могу использовать join или implode, но в моем случае массив имеет только один элемент. Почему я должен использовать значения комбо в массиве только с одним элементом?

Этот массив является результатом моей функции PHP, которая возвращает массив:

Array(18 => 'Something');

Как преобразовать это в строку?

4b9b3361

Ответ 1

Есть ли другой способ преобразования этого массива в строку?

Вы не хотите преобразовывать массив в строку, вы хотите получить значение единственного элемента массива, если я его правильно прочитаю.

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

?>

Используя array_shift, вам не нужно беспокоиться об индексе.

EDIT: Имейте в виду, что array_shift не является единственной функцией, которая вернет одно значение. array_pop(), current(), end(), reset(), все они вернут один единственный элемент. Все размещенные решения работают. Используя сдвиг массива, вы можете быть уверены, что получите только первое значение массива, даже если его несколько.

Ответ 2

Есть ли другой способ конвертировать массив в строку?

Да, есть. serialize(). Он может преобразовывать различные типы данных (включая объект и массивы) в строковое представление, которое вы можете unserialize() в более позднее время. Сериализация ассоциативного массива, такого как Array(18 => '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;
?>

Ответ 4

Вы можете использовать функцию reset(), она вернет первый член массива.

Ответ 5

implode или join (они то же самое) будут работать здесь. Кроме того, вы можете просто вызвать array_pop и получить значение единственного элемента в массиве.

Ответ 6

Если ваша цель выводит ваш массив на строку для debbuging: вы можете использовать функцию print_r(), которая получает параметр выражения ( ваш массив) и необязательный логический возвращаемый параметр. Обычно функция используется для эхо-массива, но если вы установите параметр return как истинный, он вернет впечатление массива.

Пример:

    //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>';

Или вы можете смешивать множество массивов и vars, если вы это сделаете

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

Ответ 8

Цикл

A 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:

  • Используйте функцию 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
    
  • Или используйте функцию PHP implode следующим образом:

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

    Какие принты:

    418
    
  • Вот что происходит, если вы присоединяете или вставляете пары значений ключа в массив 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.