有一段时间了,我一直在使用"传统的"递归函数来展平多维数组,例如
$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) 我正在尝试在本教程之后向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) 我正在使用.csv文件设置列宽
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(50);
Run Code Online (Sandbox Code Playgroud)
但是我看不到A列宽度的任何变化,我做错了什么?
我们假设我们有一个像这样的数组
$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)
我的问题是,是否可以单独使用引用返回到原始数组?那就是以某种方式回到父数组而不知道它的名字......这对我来说在一个更复杂的场景中是有用的.
您好我是使用F#和MySQL的新手.我有一个项目需要从mySQL数据库中检索数据.到目前为止,我安装了wamp,mySQL,mySQL连接器,php.我不知道如何贡献F#和mySQL.能否请您给我一些关于步骤的信息.
谢谢,
我正在创建一个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) 我需要在Laravel 4.2中将一个记录子集从一个数据库复制到另一个数据库
我编写了一个工匠任务,加载我需要从"默认"数据库连接复制的模型,现在需要将它们保存到第二个数据库连接(在config/database.php中定义).我找不到的是使用模型的save()方法保存到默认连接以外的数据库的任何方法.
这可能吗?我可以将我的保存"推送"到第二个数据库连接吗?或者我是否需要更改为"拉"逻辑,反转我的数据库连接定义,并在保存到"默认"之前从"第二"连接加载数据?
我正在使用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更好的选择?
对于我的数据库(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 migrations并seeding处理为应用程序的新实例创建数据库,但是使用标准应用程序配置,migrate只能访问权限较低的帐户,因此实际上无法创建/删除表.
我运行时是否有一种覆盖database.php中配置的数据库用户/密码的方法
php artisan migrate:install
Run Code Online (Sandbox Code Playgroud)
和其他迁移命令?也许某些命令行切换,那会允许我指定mydbadmin用户和密码?或者甚至只是指向不同的数据库配置设置?
我想用jQuery循环遍历html页面的DOM结构中的所有元素.基本上只需要body标签中的元素.
我想这样做的原因是因为我想获取body结构中每个元素的位置.
我搜索了一下,我发现我的问题没有答案.
非常感谢您的帮助.