如何解释“;条件&&$var=值“;php中的语法


How to interpret the "condition && $var = value" syntax in php?

我正在检查wordpress主题代码,发现了这行代码:

840 <= $width && $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px';

这一行在php方面意味着什么?

更清楚地说,这是整个功能:

/**
 * Add custom image sizes attribute to enhance responsive image functionality
 * for content images
 *
 * @since Twenty Sixteen 1.0
 *
 * @param string $sizes A source size value for use in a 'sizes' attribute.
 * @param array  $size  Image size. Accepts an array of width and height
 *                      values in pixels (in that order).
 * @return string A source size value for use in a content image 'sizes' attribute.
 */
function twentysixteen_content_image_sizes_attr( $sizes, $size ) {
    $width = $size[0];
    840 <= $width && $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px';
    if ( 'page' === get_post_type() ) {
        840 > $width && $sizes = '(max-width: ' . $width . 'px) 85vw, ' . $width . 'px';
    } else {
        840 > $width && 600 <= $width && $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px';
        600 > $width && $sizes = '(max-width: ' . $width . 'px) 85vw, ' . $width . 'px';
    }
    return $sizes;
}

这会检查一个条件并设置一个变量,以防其为true。

这就像在说:

conditionA && $variable="value";

在你的情况下,这就像在说:

if (840 <= $width) {
    $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px';
}

看一个小测试:

<?php
$a=3;
$v=0;
echo "v = $v'n";
$a == 3 && $v = "hello";
echo "v = $v";

如果你执行它,你会得到:

v = 0
v = hello

就像这样:

840 <= $width && $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px';

conditionA && conditionB 

等于

if( conditionA && conditionB ){} 

if( conditionA ) { conditionB } 

与相同

conditionA || conditionB

if( conditionA || conditionB ){}  

例如

$a = 1;
$b = 0;
// if( $a == 2 && $b = 3 ){}
$a == 2 && $b = 3; // && do not exec $b = 3,becuase $a != 2
echo $a,' ',$b;  // 1 0
// if( $a == 1 && $b = 4 ){}
$a == 1 && $b = 4; // exec $b = 4,becuase $a == 1
echo $a,' ',$b; //  1 4
// if( $a == 1 && $b = 4 ){}
// and how about  || 
$a = 1;
$b = 0;
// if( $a == 1 || $b = 3 ){}
$a == 1 || $b = 3; // && do not exec $b = 3,becuase $a == 1
echo $a,' ',$b; //  1 0
// if( $a == 2 || $b = 4 ){}
$a == 2 || $b = 4; // exec $b = 4,becuase $a == 1 not 2
echo $a,' ',$b;  // 1 4