Mysql 创建数据和添加用户

$mysql -u root -p
create database demo;  # 创建一个数据库为demo
CREATE USER 'demouser'@'localhost' IDENTIFIED BY 'demouserpassword';   #创建一个demouser的用并且添加密码为demouserpassword
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON `demo`.* TO 'demouser'@'localhost';  #让demouser管理demo数据库,拥有更新删除创建的权限.

更多请看 Mysql 文档

PHP 数字递增递减

http://www.php.net/manual/zh/language.operators.increment.php

为什么下面两个计算会相等:
45cc0a71jw1e9h28puop6j20dy09e0th

好吧先来看看:

$a = 1;
echo $a + $a++;

这里的计算并不是 echo 1 + 2, 看官方手册是这样描述的: 返回 $a,然后将 $a 的值加一。 , 所以后面的$a是 返回原数 $a, 又将 $a的值加了1. 所以前面的 $a 的值已经变成了2. 正确的计算应该是 echo 2 + 1;

这样的结果还是3

$a = 1;
echo $a + $a + $a++;

先看看后面的 $a++, 将$a 的结果加1, 并且返回 $a 所以返回的是1, 再来看看前面 $a + $a. 在这里因为计算顺序的问题会先计算$a + $a 结果等于 2, 再加上后面的 $a++($a++返回1), 虽然后面的 $a + 1了。但是和前面的两个 $a 已经没有关系了。因为在计算前面的 $a + $a的时候已经将结果保存为一个临时变量。所以结果是 echo 1 + 1 + 1;

PHP 数组添加元素/array_push

1. 在一个数组末尾添加一个元素:

$array[] = 'test';
array_push($array, 'test');

2. 在数组最前面添加一个或者多个元素:

array_unshift($array, 'test');

3. 在指定位置前面添加一个元素:

/**
 * @return array
 * @param array $src
 * @param array $in
 * @param int|string $pos
 */
function array_push_before($src, $in, $pos) {
  $R = array();
  if (is_int($pos)) {
    $R = array_merge(array_slice($src, 0, $pos), $in, array_slice($src, $pos));
  }
  else {
    foreach ($src as $k => $v) {
      if ($k === $pos) {
        $R = array_merge($R, $in);
      }
      $R[$k] = $v;
    }
  }
  return $R;
}
$array = array('a'=>'a', 'b');
$array = array_push_before($array, array('haha'=>'test3'), 1); //1 表示在第几个元素。非数组key. 以0开始。如果非数字就是在指定的key前面加一个元素.
var_dump($array);

结果:

Array
(
    [a] => a
    [haha] => test3
    [0] => b
)

4.在指定位置后面添加一个元素, 和上面一个用法:

/**
 * @return array
 * @param array $src
 * @param array $in
 * @param int|string $pos
 */
function array_push_after($src, $in, $pos) {
  $R = array();
  if (is_int($pos)) {
    $R = array_merge(array_slice($src, 0, $pos + 1), $in, array_slice($src, $pos + 1));
  }
  else {
    foreach ($src as $k => $v) {
      $R[$k] = $v;
      if ($k === $pos)
        $R = array_merge($R, $in);
    }
  }
  return $R;
}

更新请看:
PHP array-push

Drupal 图片itok

在Drupal中。图片的路径一般是:
http://example.com/sites/default/files/test.jpg?itok=FezcOafn

这里主要说一下图片的参数itok, itok就像一个钥匙。当你的图片不存在时Drupal就会跑生成图片的程序,这时就会比较传过来的itok参数和系统生成的itok是否一样。如果不一样就会报没有权限. 当你的图片无法生成的时候并且你的文件路径是有权限的时候你就应该检查一下你的itok. 用PHP手动生成一个itok对比一下传过来的itok参数. 这个功能在 modules/image/image.module Line 819 image_style_deliver().

生成一个itok.

image_style_path_token('IMAGE_STYLE', 'public://demo.jpg');

生成一个完整的图片URL.

image_style_url('IMAGE_STYLE', 'public::/demo.jpg');