2 foreach($extcredits as $id => $credit)
3 {
4 if($credit['ratio'])
5 {
6 $exchcredits[$id] = $credit;
7 }
8 }
9 改为
10
11 QUOTE:
12 if(is_array($extcredits)) //add
13 {
14 foreach($extcredits as $id => $credit)
15 {
16 if($credit['ratio'])
17 {
18 $exchcredits[$id] = $credit;
19 }
20 }
21 } //add
本文链接
PHP中两个数组合并可以使用+或者array_merge,但之间还是有区别的,而且这些区别如果了解不清楚项目中会要命的!
主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意
1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉(不是覆盖)
2)键名为字符时,+仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉,但array_merge()此时会覆盖掉前面相同键名的值
需要注意的是数组键形式 '数字' 等价于 数字
$b = array('c','d');
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));
//输出内容
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "d"
}
$b = array(0 => 'c', 1 => 'b');
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));
//输出
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "b"
}
$b = array('0' => 'c', 1 => 'b');
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));
//输出
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "b"
}
$b = array('0' => 'c', '1' => 'b');
$c = $a + $b;
var_dump($c);
var_dump(array_merge($a, $b));
//输出
array(2) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
}
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
[3]=>
string(1) "b"
}
本文链接
一、软件下载
以上为开发中需要的软件,都可以从官方网站上下载到,另本机的环境为Windows7 旗舰版。
二、软件安装
其实已经有很多软件提供了集成式的安装,一次性安装apache+php+mysql等,例如XAMPP之类的省去了配置上的繁琐,不过对于初次使用PHP,我还是踏实的逐个安装一次吧。(据以往的经验一定会撞的满头包)。
1. 安装apache的过程很简单,都是设置配置信息最终也可在 “安装目录\Apache2.2\conf\httpd.conf” 里修改,需要注意的:
1)在Server Information这一步,如果选择的是"only for the Current User",那么apache将不会被注册成服务,之后可通过命令行的方式主动注册,
可以在Apache安装目录的bin子目录下,使用如下命令将Apache安装为Windows NT服务:
httpd -k install -n "服务名"
2)windows7 安装apache提示(<OS5>拒绝访问. : Failed to open the WinNT service manager)。
解决办法:软件安装时与windows7的“用户账户控制”(UAC)冲突,只要先关 闭UAC(控制面板--用户账户和家庭里面有“更改用户账户控制设置”,改
成从不通知,完成后重启)再安装就没问题了,安装完后可以再修改回来。
2. 安装php,将压缩包解压到一个目录即可。
3. 安装Mysql,数据库的安装带来的不小的麻烦耗费了很多时间去查原因,最终还是莫名其妙的安装成功了,待遇到仙人指点后再更新本文吧。
1)安装界面有了变化,毕竟被Oracel收购了,整体的配置比之前选项少了,更个性化的配置就要修改配置文件了my.ini;
2)安装到第三部 Setup Type 时,头疼的事来了,如果默认安装就会安装到C盘下,由于不想把数据库放在系统盘中,所以一般都会选择其他盘符,所以在D盘两个
不同的位置安装软件和数据文件,导致最后一个步安装失败,查看了Mysql服务已经安装但是没有启动,估计最后一布失败的原因是服务问题,手动启动就出现了
传说中的”1067进程意外终止“,至此就不停搜索网上的各种办法也没有解决。
以上是当时安装的目录,大致的问题应该就是配置文件或安装过程默认的配置与自定义安装路径不匹配,单纯考虑这个问题应该是Mysql的这个安装BUG,
尝试了网上说的各种办法均无效,我又安装卸载了多次,终于测试成功,就是软件安装目录和Data Path目录用同一个目录(或其子目录),正常安装功,
为什么还不知道,等待仙人指点了。
3)开发的IDE,Eclipse就直接解压即可使用。
三、环境配置
1. 为Apache配置php的环境,使用Module方式加载的,在httpd.conf配置文件中找到一组”LoadModule“的配置,在其后面添加:
LoadModule php5_module "D:/Study/php/software/PHP/php5apache2_2.dll"
PHPIniDir "D:/Study/php/software/PHP"
AddType application/x-httpd-php .php .html .htm
搜索ServerName属性,删掉#注释,并修改成本机的IP地址;
如果想修改默认的web路径,搜索”DocumentRoot“和其下方的”Directory“,将路径修改成自定义路径;
2. 配置PHP环境,在安装PHP的根目录下找到文件”php.ini-development“,复制一份并修改成php.ini,搜索并修改:
extension_dir = "D:\Study\php\software\PHP\ext"
取消功能库前面的注释,需要用哪个就取消掉前面的注释
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_xmlrpc.dll
最后可以设置一个时区 date.timezone = Asia/Shanghai
3. 测试环境,在Apache配置的web目录中创建一个index.php文件,并添加代码
phpinfo();
?>
在浏览器中输入http://localhost:8080/index.php,如果显示如下即配置成功。
另,在创建一个文件mysql.php放到同目录下,添加入代码测试数据库链接,
// 连接、选择数据库
$link = mysql_connect('localhost', 'root', 'volare')
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('sakila') or die('Could not select database');
// 执行 SQL 查询
$query = 'SELECT * FROM address';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
// 以 HTML 打印查询结果
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// 释放结果集
mysql_free_result($result);
// 关闭连接
mysql_close($link);
?>