最近想把js中函数改用php实现,但是看不懂这个运算符号 “|=”  
请问大家,这个符号是什么意思呀?

解决方案 »

  1.   

    function encodeGeoHash(latitude, longitude) {
    var is_even=1;
    var i=0;
    var lat = []; var lon = [];
    var bit=0;
    var ch=0;
    var precision = 12;
    geohash = ""; lat[0] = -90.0;  lat[1] = 90.0;
    lon[0] = -180.0; lon[1] = 180.0;

    while (geohash.length < precision) {
      if (is_even) {
    mid = (lon[0] + lon[1]) / 2;
        if (longitude > mid) {
    ch |= BITS[bit];
    lon[0] = mid;
        } else
    lon[1] = mid;
      } else {
    mid = (lat[0] + lat[1]) / 2;
        if (latitude > mid) {
    ch |= BITS[bit];
    lat[0] = mid;
        } else
    lat[1] = mid;
      } is_even = !is_even;
      if (bit < 4)
    bit++;
      else {
    geohash += BASE32[ch];
    bit = 0;
    ch = 0;
      }
    }
    return geohash;
    }
      

  2.   

    function encodeGeoHash(latitude, longitude) {
    var is_even=1;
    var i=0;
    var lat = []; var lon = [];
    var bit=0;
    var ch=0;
    var precision = 12;
    geohash = ""; lat[0] = -90.0;  lat[1] = 90.0;
    lon[0] = -180.0; lon[1] = 180.0;

    while (geohash.length < precision) {
      if (is_even) {
    mid = (lon[0] + lon[1]) / 2;
        if (longitude > mid) {
    ch |= BITS[bit];
    lon[0] = mid;
        } else
    lon[1] = mid;
      } else {
    mid = (lat[0] + lat[1]) / 2;
        if (latitude > mid) {
    ch |= BITS[bit];
    lat[0] = mid;
        } else
    lat[1] = mid;
      } is_even = !is_even;
      if (bit < 4)
    bit++;
      else {
    geohash += BASE32[ch];
    bit = 0;
    ch = 0;
      }
    }
    return geohash;
    }
      

  3.   

    a=a|b
    a|=b“|”是按位或运算符。