小编Mar*_*ker的帖子

传递引用不使用array_walk_recursive的其他参数,除非它是不推荐的调用时间传递引用

有一段时间了,我一直在使用"传统的"递归函数来展平多维数组,例如

$baseArray = array(array('alpha'),
                   array('beta','gamma'),
                   array(),
                   array(array('delta','epsilon'),
                         array('zeta',array('eta',
                                            'theta'
                                           ),
                              ),
                        ),
                   array('iota'),
                  );
Run Code Online (Sandbox Code Playgroud)

到一个简单的一维数组.

昨晚,我想我会看一下使用array_walk_recursive()来看看我是否可以让它更高效,更清洁.

我的第一次尝试不是很成功:

function flattenArray($arrayValue, $arrayKey, &$flatArray) {
    $flatArray[] = $arrayValue;
}


$flattenedArray = array();
array_walk_recursive($baseArray,'flattenArray',$flattenedArray);
Run Code Online (Sandbox Code Playgroud)

我认为它应该可行,但我得到的只是一系列错误:

Warning: Cannot use a scalar value as an array in C:\xampp\htdocs\arrayTest.php on line 16
Run Code Online (Sandbox Code Playgroud)

结果是:

array(0) { }
Run Code Online (Sandbox Code Playgroud)

我的flattenArray()函数中的类型提示给了我

Catchable fatal error: Argument 3 passed to flattenArray() must be an array, integer given in C:\xampp\htdocs\arrayTest.php on line 16
Run Code Online (Sandbox Code Playgroud)

使用闭包给出了相同的结果

我可以让它工作的唯一方法(无需使用全局或静态的flattenedArray)使用call-time pass-by-reference:

function flattenArray($arrayValue, $arrayKey, $flatArray) {
    $flatArray[] …
Run Code Online (Sandbox Code Playgroud)

php pass-by-reference

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

phpunit自定义断言需要帮助

我正在尝试在本教程之后向phpunit添加一个自定义断言,以验证作为字符串返回的复数(例如

"-123 + 456 1"

通过我正在测试的方法,对于实部和虚部都定义了精度.我已经将一个Complex.php类解析为实部和虚部,并将以下断言类组合为complexAssert.php:

require_once 'PHPUnit/Framework/Assert.php';
include_once getcwd().'/custom/Complex.php';

class complexAssert extends PHPUnit_Framework_Assert {

    public function assertComplexEquals($expected, $actual, $message = '', $delta = 0)
    {
        $expectedComplex = new Complex($expected);
        $actualComplex = new Complex($actual);

        if (!($actualComplex->getReal() >= ($expectedComplex - $delta) &&
            $actualComplex->getReal() <= ($expectedComplex + $delta))) {
            return $this->fail($message);
        }

        if (!($actualComplex->getImaginary() >= ($expectedComplex - $delta) &&
            $actualComplex->getImaginary() <= ($expectedComplex + $delta))) {
            return $this->fail($message);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

我的单元测试脚本:

require_once getcwd().'/custom/complexAssert.php';
require_once 'testDataFileIterator.php';

class EngineeringTest extends PHPUnit_Framework_TestCase
{ …
Run Code Online (Sandbox Code Playgroud)

php phpunit assert

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

PHPExcel设置列宽

我正在使用.csv文件设置列宽

  $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(50);
Run Code Online (Sandbox Code Playgroud)

但是我看不到A列宽度的任何变化,我做错了什么?

php phpexcel

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

PHP:可以从对数组元素的引用中确定父数组的名称和键吗?

我们假设我们有一个像这样的数组

$arr=array(array('a'=>1,'b'=>2),array('c'=>3,'d'=>4));
Run Code Online (Sandbox Code Playgroud)

以及对其中一个要素的引用

$element=&$arr[1]['c'];
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以单独使用引用返回到原始数组?那就是以某种方式回到父数组而不知道它的名字......这对我来说在一个更复杂的场景中是有用的.

php arrays reference

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

如何将F#连接到MySQL数据库?

您好我是使用F#和MySQL的新手.我有一个项目需要从mySQL数据库中检索数据.到目前为止,我安装了wamp,mySQL,mySQL连接器,php.我不知道如何贡献F#和mySQL.能否请您给我一些关于步骤的信息.

谢谢,

mysql f#

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

授予PHP访问COM端口的权限

我正在创建一个PHP脚本,连接到通过COM5上的串行连接连接的3G调制解调器.

我收到以下错误,我相信这是因为php没有对COM5的r/w访问:

警告:fopen(COM5 :) [function.fopen]:无法打开流:第9行的C:\ xampp\htdocs\SMStest\test2.php中没有这样的文件或目录

// mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off
$fp = fopen ("COM5:", "w+");
if (!$fp) {
    echo "Uh-oh. Port not opened.";
} else {
    $e = chr(27);
    $string  = $e . "A" . $e . "H300";
    $string .= $e . "V100" . $e . "XL1SATO";
    $string .= $e . "Q1" . $e . "Z";
    echo $string;
    fputs ($fp, $string );
    fclose ($fp);
}
Run Code Online (Sandbox Code Playgroud)

php modem 3g

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

Laravel 4.2:将数据库记录从一个数据库复制到另一个数据库

我需要在Laravel 4.2中将一个记录子集从一个数据库复制到另一个数据库

我编写了一个工匠任务,加载我需要从"默认"数据库连接复制的模型,现在需要将它们保存到第二个数据库连接(在config/database.php中定义).我找不到的是使用模型的save()方法保存到默认连接以外的数据库的任何方法.

这可能吗?我可以将我的保存"推送"到第二个数据库连接吗?或者我是否需要更改为"拉"逻辑,反转我的数据库连接定义,并在保存到"默认"之前从"第二"连接加载数据?

php eloquent laravel-4

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

domDocument - 确定<br />的位置

我正在使用domDocument来解析一些HTML,并希望用\n替换中断.但是,我在识别文档中实际发生中断的位置时遇到了问题.

给出以下HTML片段 - 来自我正在使用$ dom-> loadHTMLFile($ pFilename)阅读的更大的文件:

<p>Multiple-line paragraph<br />that has a close tag</p>
Run Code Online (Sandbox Code Playgroud)

和我的代码:

foreach ($dom->getElementsByTagName('*') as $domElement) {
    switch (strtolower($domElement->nodeName)) {
        case 'p' :
            $str = (string) $domElement->nodeValue;
            echo 'PARAGRAPH: ',$str,PHP_EOL;
            break;
        case 'br' :
            echo 'BREAK: ',PHP_EOL;
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我明白了:

PARAGRAPH: Multiple-line paragraphthat has a close tag
BREAK:
Run Code Online (Sandbox Code Playgroud)

如何在段落中识别该断点的位置,并用\n替换它?

或者有没有比使用domDocument解析可能或可能不是格式良好的HTML更好的选择?

php domdocument

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

覆盖artisan migrate命令的默认Laravel数据库配置

对于我的数据库(MySQL),我有两个用户帐户,一个(mydbuser)用于一般应用程序访问,对所有表具有select/inset/update/delete权限,另一个(mydbadmin)具有管理表的权限等

CREATE USER 'mydbadmin'@'%' IDENTIFIED BY 'ultrasecret password';
GRANT ALL ON mydb.* TO 'mydbadmin'@'%';

CREATE USER 'mydbuser'@'%' IDENTIFIED BY 'not quite so secure password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'mydbuser'@'%';
Run Code Online (Sandbox Code Playgroud)

我的Laravel应用程序配置为使用mydbuser用户,而mydbadmin当前用于手动设置表格等.

现在,我想开始使用Artisan migrationsseeding处理为应用程序的新实例创建数据库,但是使用标准应用程序配置,migrate只能访问权限较低的帐户,因此实际上无法创建/删除表.

我运行时是否有一种覆盖database.php中配置的数据库用户/密码的方法

php artisan migrate:install
Run Code Online (Sandbox Code Playgroud)

和其他迁移命令?也许某些命令行切换,那会允许我指定mydbadmin用户和密码?或者甚至只是指向不同的数据库配置设置?

php migration laravel artisan

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

使用jQuery循环遍历HTML的DOM

我想用jQuery循环遍历html页面的DOM结构中的所有元素.基本上只需要body标签中的元素.

我想这样做的原因是因为我想获取body结构中每个元素的位置.

我搜索了一下,我发现我的问题没有答案.

非常感谢您的帮助.

javascript jquery

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