小编msc*_*ett的帖子

按引用分配bug

前几天我遇到了这个看似非常简单的问题如何在不引用$ array1的情况下更改$ array2中的值?然而,我越是调查它就越奇怪,它似乎确实按预期运作.在此之后,我开始研究从以下输出生成的操作码.

$array1 = array(2, 10);
$x = &$array1[1];
$array2 = $array1;
$array2[1] = 22;

echo $array1[1]; // Outputs 22
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很疯狂,因为array2应该只是array1的副本,并且发生在一个数组中的任何内容都不应该影响另一个数组的内容.当然,如果你注释掉第二行,最后一行将像预期的那样回应10.

看得更远,我可以在一个很酷的网站上向我展示PHP使用Vulcan Logic Dumper生成的操作码.这是上面代码生成的操作码.

Finding entry points
Branch analysis from position: 0
Return found
filename:       /in/qO86H
function name:  (null)
number of ops:  11
compiled vars:  !0 = $array1, !1 = $x, !2 = $array2
line     # *  op                           fetch          ext  return  operands
---------------------------------------------------------------------------------
   3     0  >   INIT_ARRAY                                       ~0      2
         1      ADD_ARRAY_ELEMENT                                ~0      10
         2      ASSIGN                                                   !0, ~0 …
Run Code Online (Sandbox Code Playgroud)

php opcodes

17
推荐指数
1
解决办法
825
查看次数

一般错误:1615准备好的陈述需要重新准备

每次我尝试将中等大小的JSON对象同步到我的数据库时,我都遇到了这个问题,因此我们可以对它进行一些报告.通过研究可能导致它的原因,我在这个问题上遇到了这些联系.

http://blog.corrlabs.com/2013/04/mysql-prepared-statement-needs-to-be-re.html http://bugs.mysql.com/bug.php?id=42041

两者似乎都指向了table_definition_cache的方向.但是,这就是说问题是由于服务器上同时发生了mysqldump.我可以向你保证,事实并非如此.此外,我将查询精简到一次只插入一个对象.

public function fire($job, $data) 
{
    foreach (unserialize($data['message']) as $org) 
    {
        // Ignore ID 33421 this will time out.
        // It contains all users in the system.
        if($org->id != 33421) {
            $organization = new Organization();
            $organization->orgsync_id = $org->id;
            $organization->short_name = $org->short_name;
            $organization->long_name = $org->long_name;
            $organization->category = $org->category->name;
            $organization->save();

            $org_groups = $this->getGroupsInOrganization($org->id);
            if (!is_int($org_groups))
            {
                foreach ($org_groups as $group)
                {
                    foreach($group->account_ids as $account_id)
                    {
                        $student = Student::where('orgsync_id', '=', $account_id)->first();
                        if (is_object($student))
                        {
                            $student->organizations()->attach($organization->id, array('is_officer' => ($group->name == 'Officers'))); …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb laravel

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

Golang Null类型和json.Decode()

我目前无法找到解决此问题的方法.如果我有一个结构,我想用http.quest中的json填充,我无法告诉例如实际传递了什么值的某些值.例如,如果我传入一个空的json对象并在看起来像这样的结构上运行json.Decode ...

var Test struct {
        Number int `json:"number"`
}
Run Code Online (Sandbox Code Playgroud)

我现在有一个json对象,据说传递的是一个数字键和一个零值,实际上我宁愿让这个返回什么都没有.是否提供了另一种方法,它实际上允许我查看传入的JSON是什么.

对不起,我一直在试图弄清楚这几天如何,这让我疯了.

谢谢你的帮助.

编辑:

我这样做是为了描述我正在谈论的内容http://play.golang.org/p/aPFKSvuxC9

json go

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

实现Reader接口

我理解Go接口的一般概念.但是,我最近正在考虑实现io.Reader界面,这让我很困惑.我发现这篇文章并没有多大帮助.

Reader接口和golang中的Read方法

首先,接受的答案是使用io.ReaderRead功能,据我可以告诉永远不会实现.其次,该Read功能如何在类似的情况下工作ioutil.ReadAll.它需要一些实现io.Reader接口并返回一片字节的东西.我不明白是什么东西只返回一个int并且err可以被处理成一片字节.

编辑:

我在疯狂的IRC频道得到了帮助,这就是你如何实际实现一个http://play.golang.org/p/ejpUVOx8jR的答案.非常感谢go社区.

编辑2:

如下所述,在strign大于缓冲区的情况下,上述实现将失败.这是一个更健全的实现http://play.golang.org/p/t4Zg8TnF33.

go

3
推荐指数
2
解决办法
8000
查看次数

升级到PHP5.6后,Pecl oci8安装失败

我正在尝试将我的所有服务器升级到目前的PHP 5.6,除了安装oci8之外,它已经很好了.它与php55配合得很好,我甚至还推出了一个带有centos的全新vagrantbox来测试它并确保它是一个完全干净的安装.

当我尝试运行安装时,我收到以下错误.

# pecl install oci8
downloading oci8-2.0.8.tgz ...
Starting to download oci8-2.0.8.tgz (190,854 bytes)
.........................................done: 190,854 bytes
11 source files, building
running: phpize
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :
building in /var/tmp/pear-build-rootMIYqiX/oci8-2.0.8
running: /var/tmp/oci8/configure --with-oci8
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep …
Run Code Online (Sandbox Code Playgroud)

php centos pecl

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

德弗尔打电话去常规

我相信我理解在正常使用情况下推迟.比如这个问题中列出的Golang defer行为.然而,当一个不返回的goroutine内部调用defer时,我有点感到困惑.这是有问题的代码.

func start_consumer() {
    conn, _ := amqp.Dial("amqp://username:password@server.com")
    //defer conn.Close()

    ch, _ := conn.Channel()
    //defer ch.Close()

    q, _ := ch.QueueDeclare(
        "test", // name
        true,   // durable
        false,  // delete when unused
        false,  // exclusive
        false,  // no-wait
        nil,    // arguments
    )

    _ = ch.Qos(
        3,     // prefetch count
        0,     // prefetch size
        false, // global
    )

    forever := make(chan bool)

    go func() {
        for {
            msgs, _ := ch.Consume(
                q.Name, // queue
                "",     // consumer
                false,  // …
Run Code Online (Sandbox Code Playgroud)

go

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

PHP/Laravel魔术,这是如何工作的?

我正在查看Laravel文档,我看到了这个片段:

class UserController extends BaseController {

    /**
     * The layout that should be used for responses.
     */
    protected $layout = 'layouts.master';

    /**
     * Show the user profile.
     */
    public function showProfile()
    {
        $this->layout->content = View::make('user.profile');
    }

}
Run Code Online (Sandbox Code Playgroud)

我们可以清楚地看到$ this-> layout ='layouts.master'.但是,然后他们定义了布局对象的子代(据我所知,它只是一个基本的PHP字符串,并且没有一个名为content的字段,通过......

$this->layout->content = View::make('user.profile');

  1. 字符串如何定义一个名为content的字段?

  2. 当我将BaseController子类化并尝试为$ this-> layout-> content分配一个值时,为什么会出现以下错误:"尝试分配非对象的属性"?

php laravel

0
推荐指数
1
解决办法
185
查看次数

标签 统计

go ×3

php ×3

laravel ×2

centos ×1

json ×1

mariadb ×1

mysql ×1

opcodes ×1

pecl ×1