Hướng dẫn else if shorthand php - khác nếu tốc ký php

Tôi có một chuỗi mà tôi muốn nối nó một số chuỗi khác. hãy cùng nói nào:

$my_string = 'Hello';

$my_string .= ' there';

Điều này sẽ trở lại 'Xin chào'.

Tôi muốn làm cho điều kiện này như thế này:

$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}

Bây giờ, tôi muốn sử dụng một hoạt động ternary để thực hiện việc này, nhưng tất cả các ví dụ tôi gặp là cho nếu/khác sẽ giống như:

$my_string .= ( $append == 'do' ) ? ' there' : '';

Vì vậy, nó có thể làm điều đó chỉ với nếu và không có khác?

Jason Aller

3,48128 Huy hiệu vàng40 Huy hiệu bạc37 Huy hiệu đồng28 gold badges40 silver badges37 bronze badges

Đã hỏi ngày 22 tháng 6 năm 2011 lúc 23:09Jun 22, 2011 at 23:09

3

Không. Tuy nhiên, điều ngược lại là có thể. Đây là một trích dẫn từ các tài liệu PHP:

Kể từ Php 5.3, có thể rời khỏi phần giữa của toán tử ternary. Biểu thức expr1?: Expr3 trả về expr1 nếu expr1 đánh giá đúng và expr3 khác.

http://php.net/manual/en/language.operators.comparison.php

Đã trả lời ngày 22 tháng 6 năm 2011 lúc 23:16Jun 22, 2011 at 23:16

AndzandzAndz

2.18616 Huy hiệu bạc12 Huy hiệu đồng16 silver badges12 bronze badges

Không ... ternary có nghĩa là ba phần bạn cần điều kiện, phần thật và phần sai

Đã trả lời ngày 22 tháng 6 năm 2011 lúc 23:12Jun 22, 2011 at 23:12

BuellerbuellerBueller

2.28017 Huy hiệu bạc11 huy hiệu đồng17 silver badges11 bronze badges

0

Kết hợp Mellamokb và Andz Bạn có thể làm điều này:

( $append != 'do' ) ?: $my_string .= ' there';

Đã trả lời ngày 22 tháng 6 năm 2011 lúc 23:21Jun 22, 2011 at 23:21

Jacob Eggersjacob EggersJacob Eggers

8.8722 Huy hiệu vàng23 Huy hiệu bạc40 Huy hiệu đồng2 gold badges23 silver badges40 bronze badges

2

Một cách khác để kiểm tra một điều kiện và sau đó nối vào chuỗi sẽ là:

 ($append == 'do')  and  ($my_string .= ' there');

Nhưng đó thực sự chỉ là một sự dịch chuyển

$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}
2 sau đó. Nhưng đến gần với một "ternary không có người khác".

Đã trả lời ngày 22 tháng 6 năm 2011 lúc 23:39Jun 22, 2011 at 23:39

ariomariomario

Huy hiệu vàng 142K2020 gold badges236 silver badges285 bronze badges

4

Bạn có thể làm được việc này:

( $append == 'do' ) ? $my_string .= ' there' : $noop ;

Nếu bạn đảo ngược câu lệnh để ternary ở bên ngoài thay vì bên trong bài tập, thì bạn có thể đặt toàn bộ câu lệnh vào phần thực, thì chỉ cần làm một điều gì đó là lệnh không tạo trong phần khác.

Đã trả lời ngày 22 tháng 6 năm 2011 lúc 23:19Jun 22, 2011 at 23:19

MELLAMOKBMELLAMOKBmellamokb

55.4K12 Huy hiệu vàng106 Huy hiệu bạc135 Huy hiệu Đồng12 gold badges106 silver badges135 bronze badges

Nếu bạn đang xem xét để làm cho mã ngắn hơn, bạn có thể viết cùng một điều trên một dòng.

if ($append == 'do') {$my_string .= ' there';}

CHỈNH SỬA

Tôi vừa phát hiện ra điều này và nghĩ rằng có ích. Bạn cũng có thể viết khối if như thế này

if ($append == 'do') $my_string .= ' there';

Đã trả lời ngày 15 tháng 3 năm 2013 lúc 6:19Mar 15, 2013 at 6:19

Astroanuastroanuastroanu

3,8172 Huy hiệu vàng35 Huy hiệu bạc 50 Huy hiệu Đồng2 gold badges35 silver badges50 bronze badges

0

Bạn không thể sử dụng ternary mà không có phần khác/sai, nhưng nếu mục đích của bạn là có mọi thứ trên một dòng tôi có thể đề xuất để thử giải pháp thay thế này:

($append == 'do' && $my_string .= ' there');

Nếu cái đầu tiên là đúng, nó sẽ tiến hành tuyên bố thứ hai. Nếu không, sẽ chỉ dừng lại sau lần đánh giá đầu tiên dẫn đến sai.

Tham khảo đánh giá lười biếng (cái gọi là đánh giá ngắn mạch)

Hoặc bạn có thể làm điều ngược lại, để lại sự thật nếu một phần trống, và chỉ tuyên bố sai, như Andz chỉ ra một cách chính xác.if part empty, and declare just the false, as Andz correctly points to.

Đã trả lời ngày 24 tháng 8 năm 2014 lúc 17:45Aug 24, 2014 at 17:45

Hướng dẫn else if shorthand php - khác nếu tốc ký php

KamafeatherkamafeatherKamafeather

7.51513 Huy hiệu vàng56 Huy hiệu bạc89 Huy hiệu đồng13 gold badges56 silver badges89 bronze badges

Bạn có thể tạo một chức năng làm những gì bạn muốn. Thay vì viết ra câu lệnh

$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}
2 mỗi lần.

function doAppend($doIt, &$value, $appendValue)
{
    if($doIt) $value .= $appendValue;
}

Gọi nó với:

$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}
0

Lưu ý cách tham số thứ hai bằng tham chiếu, vì vậy nó cũng sẽ được thay đổi trong mã gọi.

Đã trả lời ngày 22 tháng 6 năm 2011 lúc 23:27Jun 22, 2011 at 23:27

Zsalzbankzsalzbankzsalzbank

9,5251 Huy hiệu vàng24 Huy hiệu bạc39 Huy hiệu đồng1 gold badge24 silver badges39 bronze badges

Một cách đơn giản là một cách rất hiệu quả có thể là sử dụng các giá trị

$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}
4
$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}
5 nếu bạn không có gì để trả lại. Không chỉ bạn có một đối số mà bạn có thể trả lại với giá trị chính xác mà bạn muốn, như

$my_string = 'Hello';

$append = 'do';

if ( $append == 'do' ) {

    $my_string .= ' there';

}
1

Tim Diekmann

7.04310 Huy hiệu vàng36 Huy hiệu bạc59 Huy hiệu đồng10 gold badges36 silver badges59 bronze badges

Đã trả lời ngày 7 tháng 8 năm 2018 lúc 8:22Aug 7, 2018 at 8:22