Что делает? …: … делают? [дубликат]

Pure Bash с использованием массива:

version='1.2.33'
a=( ${version//./ } )                   # replace points, split into array
((a[2]++))                              # increment revision (or other part)
version="${a[0]}.${a[1]}.${a[2]}"       # compose new version
18
задан William Perron 20 October 2016 в 03:12
поделиться

6 ответов

Это тернарный оператор :

Выражение (expr1)? (expr2): (expr3) оценивается как expr2 , если expr1 оценивается как TRUE , и expr3 if expr1 оценивается как FALSE .

42
ответ дан 30 November 2019 в 05:59
поделиться

Эта последняя часть известна как условный оператор . По сути, это сжатый оператор if / else .

Он работает следующим образом:

$items =
    // if this expression is true
    (isset($_POST['items'])) 
    // then "$_POST['items']" is assigned to $items
    ? $_POST['items'] 
    // else "array()" is assigned
    : array();

Также вот некоторый псевдокод, который может быть проще:

$items = (condition) ? value_if_condition_true : value_if_condition_false;

Изменить: Вот пример быстрое, педантичное замечание: в документации PHP этот оператор называется тернарным оператором . Хотя условный оператор технически является тернарным оператором (то есть оператором с 3 операндами), называть его тернарным оператором было бы неправильным (и довольно предположительным).

17
ответ дан 30 November 2019 в 05:59
поделиться

Это тернарный оператор, который по существу говорит, что если ключ элементов находится в $ _POST, тогда установите $ items равным значению $ _POST ['items'], иначе установите его в нулевой массив .

0
ответ дан 30 November 2019 в 05:59
поделиться

Это то же самое, что:

if (isset($_POST['items']){
    $items = $_POST['items'];
} else {
    $items = array();
}
1
ответ дан 30 November 2019 в 05:59
поделиться

Обычно, если $ _POST ['items'] существует, тогда $ items устанавливается на него, иначе он устанавливается на пустой массив.

0
ответ дан 30 November 2019 в 05:59
поделиться

Посмотрите на ответ Паоло, чтобы понять тернарный оператор.

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

вверху страницы поместите это (потому что вы не можете ничего вывести на страницу до начала сеанса. IE NO ECHO STATEMENTS)

session_start();

Затем, когда пользователь отправляет вашу форму, сохраните результат в этой переменной сервера. Если это первый раз, когда пользователь отправил форму, просто сохраните ее напрямую, в противном случае прокрутите и добавьте любое значение, которое не пусто. Посмотрите, что вы ищете:

HTML CODE (testform.html):

<html>
    <body>
    <form name="someForm" action="process.php" method="POST"> 
        <input name="items[]" type="text">
        <input name="items[]" type="text">
        <input name="items[]" type="text">
        <input type="submit">
    </form>
    </body>
</html>

Код обработки (process.php):

<?php
session_start();

if(!$_SESSION['items']) {
    // If this is the first time the user submitted the form,
    // set what they put in to the master list which is $_SESSION['items'].
    $_SESSION['items'] = $_POST['items'];
}
else {
    // If the user has submitted items before...
    // Then we want to replace any fields they changed with the changed value
    // and leave the blank ones with what they previously gave us.
    foreach ($_POST['items'] as $key => $value) {
        if ($value != '') { // So long as the field is not blank
            $_SESSION['items'][$key] = $value;
        }
    }
}


// Displaying the array.
foreach ($_SESSION['items'] as $k => $v) {
    echo $v,'<br>';
}
?>
2
ответ дан 30 November 2019 в 05:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: