Преобразование первого элемента массива в строку в PHP
У меня есть массив PHP и вы хотите преобразовать его в строку.
Я знаю, что могу использовать join
или implode
, но в моем случае массив имеет только один элемент. Почему я должен использовать значения комбо в массиве только с одним элементом?
Этот массив является результатом моей функции PHP, которая возвращает массив:
Array(18 => 'Something');
Как преобразовать это в строку?
Ответы
Ответ 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.