小编And*_*ndy的帖子

PHP中的数组到Object和Object to Array - 有趣的行为

你能解释下一个有趣的行为吗?

class test {
  //Class *test* has two properties, public and private.
  public $xpublic = 'x1';
  private $xprivate = 'x2';
}
$testObj = new test();
Run Code Online (Sandbox Code Playgroud)

让我们转换$testObj为数组.

settype($testObj, 'array');
var_dump($testObj);
Run Code Online (Sandbox Code Playgroud)

结果:

array(2) {
  ["xpublic"]=> string(3) "x1"
  ["testxprivate"]=> string(4) "x2"
}

好的,xprivate财产变成了testxprivate

让我们将这个数组转换为object.

$newObj = (object)$testObj;
var_dump($newObj);
Run Code Online (Sandbox Code Playgroud)

结果:

object(stdClass)#1 (2) {
  ["xpublic"]=> string(3) "xxx"
  ["xprivate":"test":private]=> string(4) "xxx3"
}

$newObj是一个stdClass对象.

问题是:

为什么testxprivate成为新对象的私有财产xprivate(而不是testxprivate)?PHP如何知道该$testObj数组是一个对象?

如果我定义相等的数组:

$testArray = array('xpublic'=>'x1', 'testxprivate'=>'x2'); …
Run Code Online (Sandbox Code Playgroud)

php arrays casting object

18
推荐指数
1
解决办法
2234
查看次数

比较PHP中的数组 - 有趣的行为

第一个例子:

$x = array("a" => 1, "b" => 2); 
$y = array("b" => 1, "a" => 2);
$xLessY = ($x < $y);
$xGreaterY = ($x > $y);
var_dump($xLessY, $xGreaterY);
Run Code Online (Sandbox Code Playgroud)

结果:$ xLessY = true,$ xGreaterY = true

第二个例子:

$x = array("a" => 2, "b" => 1); 
$y = array("b" => 2, "a" => 1);
$xLessY = ($x < $y);
$xGreaterY = ($x > $y);
var_dump($xLessY, $xGreaterY);
Run Code Online (Sandbox Code Playgroud)

结果:$ xLessY = false,$ xGreaterY = false

根据http://docs.php.net/manual/en/language.operators.comparison.php上的文档:

如果在操作数2中找不到操作数1的键,则数组是无法比较的,否则 …

php arrays compare

6
推荐指数
1
解决办法
386
查看次数

Rust 中的引用分配

下面的代码不能编译,因为x在 move 之后使用(因为x有 type &mut u8,它没有实现Copytrait)

fn main() {
    let mut a: u8 = 1;
    let x: &mut u8 = &mut a;
    let y = x;
    x;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,y隐式具有类型&mut u8

但是如果我明确指定y它编译的类型。以下代码编译

fn main() {
    let mut a: u8 = 1;
    let x: &mut u8 = &mut a;
    let y: &mut u8 = x;
    x;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果我更改let y: &mut u8 = x;let y: &u8 = x; …

rust

3
推荐指数
1
解决办法
396
查看次数

Webgl:最远的飞机能见度

好吧,我有一个非常简单的例子:只是一个三角形,其z坐标等于1(无视图或投影矩阵).坐标是:

0.0,  0.6,  1.0
-0.5, -0.4,  1.0
0.5, -0.4,  1.0
Run Code Online (Sandbox Code Playgroud)

所以三角形位于最远的平面上.DEPTH_TEST已禁用.三角形是可见的,因为-1 <= z <= 1.但是当我启用DEPTH_TEST时:

gl.enable(gl.DEPTH_TEST);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
Run Code Online (Sandbox Code Playgroud)

三角形不再可见.当我将所有z坐标更改为-1(因此它位于最近的平面上)时,它再次变为可见.

那为什么在最远的飞机上看不到它?1)是webgl bug 2)它是webgl/opengl功能吗?3)如果它是一个功能,为什么它以这种方式工作?

3d opengl-es webgl

2
推荐指数
1
解决办法
56
查看次数

标签 统计

arrays ×2

php ×2

3d ×1

casting ×1

compare ×1

object ×1

opengl-es ×1

rust ×1

webgl ×1