PHP: действительно ли я могу сослаться на единственного члена массива, который возвращается функцией?

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

11
задан 16 September 2008 в 01:56
поделиться

17 ответов

Попытка:

<?php
$firstElement = reset(functionThatReturnsAnArray());

Если Вы просто ищете первый элемент массива.

8
ответ дан 3 December 2019 в 02:53
поделиться

Иногда я буду изменять функцию, таким образом, она сможет дополнительно возвратить элемент вместо целого массива:

<?php
function functionThatReturnsAnArray($n = NULL) {
  return ($n === NULL ? $myArray : $myArray[$n]);
}
$firstElement = functionThatReturnsAnArray(0);
-1
ответ дан 3 December 2019 в 02:53
поделиться

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

function func($first = false) {
    ...
    if $first return $array[0];
    else return $array;
}

$array = func();
$item = func(true);

Мой php немного ржав, но я вполне уверен, который работает.

Можно также посмотреть на array_shift () и array_pop ().

Это, вероятно, также возможно:

array(func())[0][i];

Этот 0 для функции.

-1
ответ дан 3 December 2019 в 02:53
поделиться

http://us3.php.net/reset

Только доступный в php версии 5.

-1
ответ дан 3 December 2019 в 02:53
поделиться

Я предполагаю, что это - встроенная или библиотечная функция, так как она кажется, что Вы не можете отредактировать ее непосредственно. Я рекомендую создать функцию обертки, чтобы дать Вам вывод, в котором Вы нуждаетесь:

function functionThatReturnsOneElement( $arg )
{
    $result = functionThatReturnsAnArray( $arg );
    return $result[0];
}
$firstElement = functionThatReturnsOneElement();
0
ответ дан 3 December 2019 в 02:53
поделиться

Насколько я знаю, что это не возможно, я хотел сделать это сам несколько раз.

-1
ответ дан 3 December 2019 в 02:53
поделиться

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

$firstElement = ($t = functionThatReturnsAnArray()) ? $t[0] : false;

и для строк Вы могли использовать

$string = (($t = functionThatReturnsAnArray())==0) . $t[0];

.. Интересная проблема

Дракон

0
ответ дан 3 December 2019 в 02:53
поделиться
$firstItem = current(returnsArray());
0
ответ дан 3 December 2019 в 02:53
поделиться

Также current($array) или array_shift($array) будет работать, первый оставит массив неповрежденным.

1
ответ дан 3 December 2019 в 02:53
поделиться

Я думаю, что любое вышеупомянутое потребовало бы, чтобы комментарий объяснил, что Вы делаете, таким образом становясь двумя строками. Я нахожу более простым сделать:

$element = functionThatReturnsArray();
$element = $element[0];

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

0
ответ дан 3 December 2019 в 02:53
поделиться

Можно использовать array_slice(), как так:

$elementX = array_slice(functionThatReturnsAnArray(), $x, 1);

Также замеченный это end() не упоминается. Это возвращает последний элемент массива.

1
ответ дан 3 December 2019 в 02:53
поделиться

Я на самом деле использую функцию удобства, которую я записал в таких целях:

/**
 * Grabs an element from an array using a key much like array_pop
 */
function array_key_value($array, $key) {
    if(!empty($array) && array_key_exists($key, $array)) {
        return $array[$key];
    }
    else {
        return FALSE;
    }
}

затем Вы просто называете его как так:

$result = array_key_value(getMeAnArray(), 'arrayKey');
1
ответ дан 3 December 2019 в 02:53
поделиться

список () полезен здесь. С любым, но первым элементом массива, необходимо будет заполнить его бесполезными переменными. Например:

list( $firstElement ) = functionThatReturnsAnArray();
list( $firstElement , $secondElement ) = functionThatReturnsAnArray();

И так далее.

3
ответ дан 3 December 2019 в 02:53
поделиться

К сожалению, это не возможно с PHP. Необходимо использовать две строки, чтобы сделать это.

6
ответ дан 3 December 2019 в 02:53
поделиться

Можно сделать это в одной строке! Используйте array_shift ().

<?php

echo array_shift(i_return_an_array());

function i_return_an_array() {
    return array('foo', 'bar', 'baz');
}

Когда это будет выполняться, это отзовется эхом"foo".

5
ответ дан 3 December 2019 в 02:53
поделиться

@Scott Reynen

это не верно. Это будет работать:

list(,,$thirdElement) = $myArray;
9
ответ дан 3 December 2019 в 02:53
поделиться

nickf, хороший для знания, спасибо. К сожалению, это имеет проблемы удобочитаемости вне нескольких запятых.

0
ответ дан 3 December 2019 в 02:53
поделиться